postman 測試rest-API 碰到的一些問題

首先來了解一下postman,postman 是谷歌瀏覽器的一個插件,它可以用來充當客戶端測試API接口
它提供相應的get/post/put/delete/等常用的請求方法
設置Content-Type格式,以及提供認證支持,非常nice。
來看一下他的界面

Paste_Image.png

![1DT3TP}$REDB$BGSYA]$UQJ.png](http://upload-images.jianshu.io/upload_images/1516470-c860504f76c08c51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![8]S1GHCVTB@C]B1ZI{SBT}Q.png](http://upload-images.jianshu.io/upload_images/1516470-63941f7ad4c86330.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

82`(DYPMJ95SY7EO68)8D}H.png
0NO`K7P_SUBJ}PONG{7EVOL.png

簡單的了解完postman的工具以后,現在我說說我自己的遇到的錯誤。
我使用python flask 框架來書寫rest-API 寫了相應的路由但是呢在post提交數據的時候出現了一直報錯400 的錯誤。
先來看一下我的代碼:


、、、
//post請求的代碼
@app.route('/api/users',methods=['POST'])
def create_user():
if not request.json or not 'username' in request.json:
abort(400)
user = {
'id':users[-1]['id'] + 1,
'username':request.json['username'],
'password':request.json['password']
}
users.append(user)
return jsonify({'user':user}), 201
、、、


(注意源代碼是有縮進的)這段代碼看起來一點問題也沒有,那么我問在哪呢?
在postman中我將提交數據的格式使用的是form表單提交的,但是呢在代碼中我是用request.json來請求的,提交和請求的格式不一致導致了出錯。!!當然了要解決這個問題有兩種方式第一種:是提交的時候postman中HEADERS使用的Content-Type 修改為application/json 并且Body中選中raw,寫數據,第二種:將代碼中的request.json修改為表單請求方式,request.form來接收表單數據,Headers中使用from-data或者x-www-form-urlencode 同時寫數據。

最后成功了。

0E}Q1@D51DE_{Q@VSNUAU4Y.png

get一下結果

Paste_Image.png

哇塞出來了!

補一些概念:
Content-Type:Content-Type,內容類型,一般是指網頁中存在的Content-Type,用于定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件,這就是經常看到一些Asp網頁點擊的結果卻是下載到的一個文件或一張圖片的原因

關于更多消息體的編碼格式可以參考這里(https://imququ.com/post/four-ways-to-post-data-in-http.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容