美文网首页
python高效web API开发库FastAPI快速入门教程1

python高效web API开发库FastAPI快速入门教程1

作者: python测试开发 | 来源:发表于2021-07-15 22:54 被阅读0次

创建API,即应用程序编程接口(API: application programming interface)。本教程介绍FastAPI的主要概念,以及如何使用它来快速创建Web APIs。

到最后,你将能够开始创建生产就绪的Web API,而且你将有必要深入了解,为你的特定用例学习更多知识。

本教程是由FastAPI的作者编写的。它包含了从官方文档中精心挑选的片段,避免了在技术细节上的迷失,同时帮助你尽可能快地进入状态。

什么是FastAPI?

FastAPI是现代的、高性能的网络框架,用于用Python构建基于标准类型提示的API。特点:

  • 运行速度快。基于Starlette和pydantic,提供了非常高的性能,与NodeJS和Go相当。
  • 快速编码。它可以显著提高开发速度。
  • 减少了错误的数量。它减少了人为造成错误的可能性。
  • 直观。它提供了很好的自动完成等编辑器支持,调试的时间更少。
  • 直接。它被设计成使用和学习都不复杂,所以你可以花更少的时间阅读文档。
  • 简洁:它最大限度地减少了代码的重复。
  • 稳健:它提供生产级代码和自动互动的文档。
  • 基于标准。它基于API的开放标准,OpenAPI和JSON Schema。

安装FastAPI

# pip install fastapi uvicorn

FastAPI用来构建API,而Uvicorn是使用API来服务请求的服务器。

快速入门

# main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

执行

$ uvicorn main:app --reload
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [22487] using statreload
INFO:     Started server process [22489]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

使用了--reload,当你更新你的应用程序代码时,服务器将自动重新加载。

用浏览器打开http://127.0.0.1:8000,内容如下。

{"message": "Hello World"}

该JSON消息与你在应用程序中从函数中返回的字典相同。FastAPI负责将Python dict序列化为JSON对象,并设置适当的内容类型。

在浏览器中打开http://127.0.0.1:8000/docs,你会看到由Swagger UI提供的自动交互式API文档。

另一种自动生成的交互式API文档在:http://127.0.0.1:8000/redoc

由于FastAPI是基于像OpenAPI这样的标准,有许多方法来显示API文档。FastAPI默认提供这两种方式。

FastAPI是一个Python类,为你的API提供所有的功能。

这里的app变量将是FastAPI类的实例。这将是创建你的API的主要交互点。

常见的HTTP方法如下:


@app.get("/")告诉FastAPI,下面的函数负责处理使用get操作去往路径/的请求。这是与路径操作有关的装饰器,或者说是路径操作装饰器。如果你想了解更多关于装饰器的信息,那么请看Python装饰器的入门手册

其他操作有:


也可以把它定义为一个普通的函数,而不是使用async def,改成def即可。

如果你不知道普通函数和async函数的区别以及何时使用它们,请查看FastAPI文档中的并发和async/await。参考:Concurrency and async/await

可以返回一个字典、列表,或者是字符串、整数等的单数值。你还可以返回pydantic模型。

还有许多其他的对象和模型将被自动转换为JSON,包括对象关系映射器object-relational mappers (ORMs)和其他。

相关文章

网友评论

      本文标题:python高效web API开发库FastAPI快速入门教程1

      本文链接:https://www.haomeiwen.com/subject/pjompltx.html