有没有办法在 FastAPI 中漂亮地打印/美化 JSON 响应?
Posted
技术标签:
【中文标题】有没有办法在 FastAPI 中漂亮地打印/美化 JSON 响应?【英文标题】:Is there a way to pretty print / prettify a JSON response in FastAPI? 【发布时间】:2021-08-19 08:06:51 【问题描述】:我正在寻找类似于 Flask 的 app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True
的东西。
【问题讨论】:
【参考方案1】:这取自David Montague。
您可以使用自定义响应类注释任何端点,例如
@app.get("/config", response_class=PrettyJSONResponse)
def get_config() -> MyConfigClass:
return app.state.config
PrettyJSONResponse
的示例可能是(indent=4
是您要问的)
import json, typing
from starlette.responses import Response
class PrettyJSONResponse(Response):
media_type = "application/json"
def render(self, content: typing.Any) -> bytes:
return json.dumps(
content,
ensure_ascii=False,
allow_nan=False,
indent=4,
separators=(", ", ": "),
).encode("utf-8")
【讨论】:
【参考方案2】:我不确定你的问题到底是什么,你能说出你需要什么背景吗?
但是,由于 FASTAPI 基于开放标准(OpenAPI、JSONSchema),它具有自动文档。 --> FastAPI Auto Docs.
您在 host/docs 下有 Swagger UI。 或 host/redoc 下的 ReDoc。 两者都可以轻松地为您提供 JSON 响应的漂亮表示。
【讨论】:
以上是关于有没有办法在 FastAPI 中漂亮地打印/美化 JSON 响应?的主要内容,如果未能解决你的问题,请参考以下文章
在 NSObject 的子类上实现啥方法以允许在 swift 操场上进行漂亮的打印?