
本文将介绍如何在 FastAPI 应用程序中返回纯文本响应,而不是默认的 JSON 格式。通过使用 `PlainTextResponse`,你可以避免字符串被自动格式化为 JSON,从而直接返回原始文本内容。本文将提供详细的代码示例和步骤,帮助你轻松实现纯文本响应的返回。
FastAPI 默认会将从 endpoint 返回的字符串转换为 JSON 响应。这意味着字符串中的双引号会被转义(加上反斜杠 \),并且整个字符串会被包裹在双引号中。 如果你需要返回未经格式化的纯文本,比如直接返回 Hello "World"! 而不是 "Hello \"World\"!",则需要使用 PlainTextResponse。
使用 PlainTextResponse 返回纯文本
PlainTextResponse 是 FastAPI 提供的响应类,用于返回纯文本内容。要使用它,你需要从 fastapi.responses 导入 PlainTextResponse,并在你的 endpoint 中指定 response_class=PlainTextResponse。
以下是一个示例:
import uvicorn
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse
app = FastAPI()
@app.get(
"/",
response_class=PlainTextResponse,
)
def read_root():
return 'Hello "World"!'
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)代码解释:
-
导入必要的模块:
- uvicorn:用于运行 FastAPI 应用程序。
- FastAPI:FastAPI 框架的核心类。
- PlainTextResponse:用于返回纯文本响应的类。
-
创建 FastAPI 实例:
- app = FastAPI():创建一个 FastAPI 应用程序实例。
-
定义 endpoint:
- @app.get("/", response_class=PlainTextResponse):使用 @app.get() 装饰器定义一个 GET 请求的 endpoint,路径为 /。response_class=PlainTextResponse 指定该 endpoint 返回的响应类型为纯文本。
- def read_root()::定义 endpoint 的处理函数,该函数返回字符串 'Hello "World"!'。
-
运行应用程序:
- if __name__ == "__main__"::这是一个 Python 惯用法,用于确保只有在直接运行该脚本时才执行以下代码。
- uvicorn.run(app, host="0.0.0.0", port=8000):使用 uvicorn 运行 FastAPI 应用程序,监听所有 IP 地址(0.0.0.0)的 8000 端口。
运行结果
运行上述代码后,你可以使用浏览器或 curl 等工具访问 http://127.0.0.1:8000/。 你会看到返回的文本是 Hello "World"!,而不会被 JSON 格式化。
注意事项
-
确保你已经安装了 FastAPI 和 uvicorn:
pip install fastapi uvicorn
PlainTextResponse 适用于返回简单的文本内容。 如果你需要返回更复杂的数据结构,或者需要支持不同的内容类型,则应该使用其他响应类,例如 JSONResponse 或 HTMLResponse。
response_class 可以在不同的 endpoint 中灵活使用,根据需要选择合适的响应类型。
总结
通过使用 PlainTextResponse,你可以轻松地在 FastAPI 应用程序中返回纯文本响应。 这在需要返回未经格式化的文本内容时非常有用。 记住,根据你的需求选择合适的响应类型,以确保你的 API 能够正确地处理和返回数据。










