Sanic response json() 函式用法和示例

veelion發表於2019-03-23

response.json() 功能:Sanic 返回json格式的文字內容給瀏覽器,這個json資料格式多用於網頁非同步載入AJAX的後端介面,或者是實現API與http客戶端進行資料交換。

Sanic response.json() 函式

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=Falseindent=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"
}

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章