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.con 原创,没有猿人学授权,请勿以任何形式转载。***
说点什么吧...