状态码
在 Pywss 中,通过 ctx.set_status_code
可以指定 响应码。
>>> ctx.set_status_code(200)
>>> ctx.set_status_code(pywss.StatusOK)
>>> ctx.set_status_code(403)
>>> ctx.set_status_code(pywss.StatusForbidden)
响应头
在 Pywss 中,通过 ctx.set_header
可以指定 响应头。
>>> ctx.set_header("Content-Type", "application/json")
>>> ctx.set_header("content-type", "application/json")
>>> ctx.set_header("X-Api-Key", "api-token")
>>> ctx.set_header("x-api-key", "api-token")
注意:set_header
内置转化逻辑,故支持 Header 输入全小写。(不过,作为一名合格的后端研发,你应该知道这样是不对的)
响应体
在 Pywss 中,通过 ctx.write
可以指定 响应数据。
实际上,ctx 提供了多种数据的写入渠道,包括:
ctx.write_text
:-ctx.write_json
:基于Content-Type: application/json
指定响应类型ctx.write_file
:基于Content-Disposition: attachment; filename="filename"
指定响应类型ctx.write_chunk
:基于Transfer-Encoding: chunked
实现块(流)式响应
大部分场景下,建议使用统一的 ctx.write
入口。
String类型
>>> ctx.write("data")
>>> ctx.write_text("data")
Json类型
>>> ctx.write({"key": "value"})
>>> ctx.write_json({"key": "value"})
File类型
>>> ctx.write(open("file.txt", "rb"))
>>> ctx.write_file("file.txt")
Chunk类型
>>> ctx.write_chunk("data-chunk-1")
>>> ctx.write_chunk("data-chunk-2")
>>> ctx.write_chunk("data-chunk-3")
>>> ctx.write_chunk("data-chunk-4")
重定向
在 HTTP 响应中,重定向是常见需求。
我们可以通过指定状态码和响应头来实现。
ctx.set_status_code(302)
ctx.set_header("Location", "/new/route")
Pywss 提供了开箱即用的重定向功能,通过 ctx.redirect
可以直接使用。
>>> ctx.redirect("/")
>>> ctx.redirect("http://github.com")