创建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)和其他。
网友评论