FastAPI是一种现代、快速(高性能)的Web框架,用于Python 3.6+,使用Python类型提示构建API。它的设计初衷是帮助开发者在短时间内开发出高性能的API服务。FastAPI的灵感来源于许多高性能的编程框架,包括Express、Django REST Framework和Flask,但它提供了一些特定的特性和优化,使其脱颖而出。
什么是FastAPI?
FastAPI实现并支持了Python中的类型提示,使开发者能够在编写代码时更加高效和可靠。它不仅简化了API的开发过程,还在性能方面做出了显著贡献。FastAPI能够在多种情况下提供出色的吞吐量和低延迟,使其非常适合构建快速和可扩展的Web服务。
FastAPI的主要特性包括:
- 快速:FastAPI是当前最快的Python网络框架之一,就像NodeJS和Go这样的系统语言。它使用Starlette(用于网络部分)和Pydantic(用于数据部分)进行优化。
- 简单:开发者可以在数分钟内无痛地创建API。
- 基于标准:遵循OpenAPI和JSON Schema标准,让我们能够自动生成交互式文档和数据验证。
- 自动生成的交互式API文档:Swagger UI和ReDoc界面。
- Python 3.6+类型提示让代码自动完成,极大提升开发体验。
- 生产就绪:适合生产环境应用的代码。
安装FastAPI
在开始使用FastAPI之前,你需要确保你的Python环境已经配置好,然后你可以通过以下命令安装FastAPI:
pip install fastapi
为了运行FastAPI应用,我们还需要一个ASGI服务器,例如uvicorn:
pip install uvicorn
开始使用FastAPI
让我们从一个简单的示例应用开始,该应用提供了一个基本的“Hello, World!”服务。
创建一个文件名为main.py
,代码如下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {
"Hello": "World"}
要运行这个应用,使用以下命令:
uvicorn main:app --reload
main
:指的是Python文件(不包括.py扩展名)。app
:是FastAPI实例的名字。--reload
:启用自动重载,在代码更改时自动重启服务器。适合开发模式使用。
打开浏览器访问http://127.0.0.1:8000
,你将看到一个简单的JSON响应:{"Hello": "World"}
。
此外,FastAPI会为你自动生成API文档。使用Swagger UI访问http://127.0.0.1:8000/docs
,或者使用ReDoc访问http://127.0.0.1:8000/redoc
。
定义请求方法
FastAPI支持几种常见的HTTP方法:GET、POST、PUT、DELETE等。让我们创建一个简单的示例,演示如何使用这些HTTP方法:
from fastapi import FastAPI
app = FastAPI()
# GET请求:获取信息
@app.get("/")
async def root():
return {
"message": "Hello World"}
# POST请求:创建新资源
@app.post("/items/")
async def create_item(item: dict):
return {
"item_name": item.get("name")}