欢迎访问宙启技术站
智能推送

Python中使用starlette.responses.PlainTextResponse()返回纯文本响应的示例

发布时间:2024-01-07 13:07:24

starlette是一个基于ASGI的轻量级Web框架,可以用于构建高性能的异步Web应用程序。其中的starlette.responses.PlainTextResponse()函数用于返回纯文本响应。

下面是一个使用starlette.responses.PlainTextResponse()返回纯文本响应的示例:

from starlette.applications import Starlette
from starlette.responses import PlainTextResponse
from starlette.routing import Route

async def homepage(request):
    return PlainTextResponse('Hello, World!')

routes = [
    Route('/', homepage),
]

app = Starlette(routes=routes)

在上面的示例中,我们创建了一个名为homepage的异步函数,该函数接收一个request参数,返回一个纯文本响应PlainTextResponse,响应的内容是Hello, World!

接下来,我们通过Route类将homepage函数绑定到根路径'/',并将这个路由添加到routes列表中。

最后,我们创建一个Starlette应用程序,将routes列表作为参数传递进去。

这样,我们就可以通过运行这个应用程序来启动一个Web服务器,监听localhost:8000端口,并在访问根路径时返回Hello, World!这段文本。

在命令行中运行以下命令来启动服务器:

$ uvicorn app:app --reload

其中,app:app表示运行名为app的应用程序,--reload参数用于实现热重载(即在代码修改后自动重新加载应用程序)。

如果一切顺利,你将在浏览器中访问http://localhost:8000,看到Hello, World!这段文本的输出。

除了返回简单的文本响应,starlette.responses.PlainTextResponse()还可以传递其他参数,如status_code表示响应的状态码,默认为200;media_type表示响应的媒体类型,默认为text/plain

下面是一个带有自定义状态码和媒体类型的示例:

from starlette.applications import Starlette
from starlette.responses import PlainTextResponse
from starlette.routing import Route
from starlette.status import HTTP_404_NOT_FOUND

async def not_found(request):
    return PlainTextResponse('Not Found', status_code=HTTP_404_NOT_FOUND, media_type='text/html')

routes = [
    Route('/404', not_found),
]

app = Starlette(routes=routes)

在上面的示例中,我们创建了一个名为not_found的异步函数,该函数接收一个request参数,返回一个纯文本响应PlainTextResponse,响应的内容是Not Found,状态码为404,媒体类型为text/html

接下来,我们通过Route类将not_found函数绑定到路径'/404',并将这个路由添加到routes列表中。

最后,我们创建一个Starlette应用程序,将routes列表作为参数传递进去。

这样,我们就可以通过运行这个应用程序来启动一个Web服务器,监听localhost:8000/404端口,并在访问该路径时返回Not Found这段文本,状态码为404,媒体类型为text/html

在命令行中运行以下命令来启动服务器:

$ uvicorn app:app --reload

如果一切顺利,你将在浏览器中访问http://localhost:8000/404,看到Not Found这段文本的输出,并且状态码为404,媒体类型为text/html

总结:starlette.responses.PlainTextResponse()函数可以用于返回纯文本响应。通过传递不同的参数可以定制响应的状态码和媒体类型。