Skip to main content

状态码

在 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")