response.json() 功能:Sanic 返回json格式的文字內容給瀏覽器,這個json資料格式多用於網頁非同步載入AJAX的後端介面,或者是實現API與http客戶端進行資料交換。
response.json() 語法
def json(
body,
status=200,
headers=None,
content_type="application/json",
dumps=json_dumps,
**kwargs
):
response.json() 引數
- body:響應要返回的JSON資料,通常是一個字典;
- status:預設 http 狀態碼200,正常返回不要修改;
- headers:自定義 http 響應頭;
- content_type:純文字的content type,不要修改;
- dumps:把json資料(字典)dumps為字串的函式;
- kwargs:dumps函式的引數;
這裡面,body
是必需的引數,可以通過傳入headers
來自定義響應頭,content_type引數不要修改。如果響應自己的dumps函式可以為設定dumps
引數。
如果想修改預設的dumps函式的引數,可以傳值給kwargs
,比如,eunsure_ascii=False
,indent=4
等等,更多引數詳見Python的json模組的json.dumps()
函式。
比如,自定義響應頭headers:
return json({'msg':'Welcom to 猿人學Python'},
headers={'X-Serverd-By': 'YuanRenXue Python'})
response.json() 返回值
返回一個HTTPResponse
類的例項。多數情況下,路由函式直接返回這個例項。當需要再進一步處理響應(比如,設定響應cookies)時,要把它賦值給一個變數。
response.json() 例子
from sanic import Sanic
from sanic import response
app = Sanic()
@app.route('/json')
async def json(request):
return response.json(
{'msg': 'Welcom to 猿人學Python'},
headers={'X-Serverd-By': 'YuanRenXue Python'},
ensure_ascii=False,
indent=4,
)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8888)
通過curl
來檢視json響應:
curl -i http://127.0.0.1:8888/json
結果如下,可以看到我們自定義的headersX-Serverd-By: YuanRenXue Python
:
HTTP/1.1 200 OK
Connection: keep-alive
Keep-Alive: 5
X-Serverd-By: YuanRenXue Python
Content-Length: 41
Content-Type: application/json
{
"msg":"Welcom to 猿人學Python"
}
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***