gpt4 book ai didi

python - Sanic (asyncio + uvloop webserver) - 返回自定义响应

转载 作者:太空狗 更新时间:2023-10-30 02:08:45 26 4
gpt4 key购买 nike

我从 Sanic 开始...

Sanic is a Flask-like Python 3.5+ web server that's written to go fast. (...) On top of being Flask-like, Sanic supports async request handlers. This means you can use the new shiny async/await syntax from Python 3.5, making your code non-blocking and speedy.

...直到现在,关于如何使用他的例子非常少,文档也不是很好。

按照文档的基本示例,我们有

from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route("/")
async def test(request):
return json({"test": True})

if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)

例如,如何返回带有自定义状态代码的自定义响应?

最佳答案

Sanic 中,HTTP 响应是 HTTPResponse 的实例,正如您在下面的代码实现中看到的,以及函数 jsontexthtml 只是封装了对象的创建,在 factory pattern 之后

from ujson import dumps as json_dumps
...

def json(body, status=200, headers=None):
return HTTPResponse(json_dumps(body), headers=headers, status=status,
content_type="application/json")



def text(body, status=200, headers=None):
return HTTPResponse(body, status=status, headers=headers,
content_type="text/plain; charset=utf-8")


def html(body, status=200, headers=None):
return HTTPResponse(body, status=status, headers=headers,
content_type="text/html; charset=utf-8")

函数 json({"test": True}) 只是使用超快的 ujsondict 对象转储为 JSON 字符串并设置 content_type 参数。

所以你可以返回一个自定义状态码返回 json({"message": "bla"}, status=201) 或创建一个 HTTPResponse 如上面的代码.

关于python - Sanic (asyncio + uvloop webserver) - 返回自定义响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41146313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com