首先來了解一下postman,postman 是谷歌瀏覽器的一個插件,它可以用來充當客戶端測試API接口
它提供相應的get/post/put/delete/等常用的請求方法
設置Content-Type格式,以及提供認證支持,非常nice。
來看一下他的界面
![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)
簡單的了解完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 同時寫數據。
最后成功了。
get一下結果
哇塞出來了!
補一些概念:
Content-Type:Content-Type,內容類型,一般是指網頁中存在的Content-Type,用于定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件,這就是經常看到一些Asp網頁點擊的結果卻是下載到的一個文件或一張圖片的原因
關于更多消息體的編碼格式可以參考這里(https://imququ.com/post/four-ways-to-post-data-in-http.html)