如何在FastAPI中返回纯文本

问题描述 投票:0回答:2

在此示例中,入口点 http://127.0.0.1:8000/ 返回格式化文本:

"Hello \"World\"!"

引号用斜杠遮盖,并且在开头和结尾都添加引号。如何返回未格式化的文本,与我的字符串相同

Hello "World"!

import uvicorn
from fastapi import FastAPI

app = FastAPI()


@app.get("/",)
def read_root():
    return 'Hello "World"!'


uvicorn.run(app)
python fastapi
2个回答
11
投票

当您从 FastAPI 端点返回字符串时,FastAPI 会自动将其转换为 JSON 响应,这就是示例中引号被转义的原因。 JSON 字符串必须使用反斜杠转义双引号。

如果您想返回无格式文本(纯文本)而不是 JSON,您可以使用 FastAPI 的

PlainTextResponse
对象(文档此处)来实现。

我在这里使用 FastApi 版本 0.104:

import uvicorn
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse

app = FastAPI()


@app.get(
    "/",
    response_class=PlainTextResponse,
)
def read_root():
    return 'Hello "World"!'


uvicorn.run(app)


0
投票

您还可以显式返回一个

PlainTextResponse
对象:

import uvicorn
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse

app = FastAPI()

@app.get("/")
def read_root():
    return PlainTextResponse('Hello "World"!')

uvicorn.run(app)

由于媒体类型在这里并不重要,因此您还可以返回一个

Response
对象(
PlainTextResponse
Response
的子类,其中
media_type="text/plain"
):

import uvicorn
from fastapi import FastAPI, Response

app = FastAPI()

@app.get("/")
def read_root():
    return Response('Hello "World"!')

uvicorn.run(app)
© www.soinside.com 2019 - 2024. All rights reserved.