FastAPI是一个基于Python的现代、高效、易用的Web框架,它利用了Python的异步功能和类型提示,提供了强大的性能和易用性。Uvicorn是FastAPI推荐的ASGI(Asynchronous Server Gateway Interface)服务器,它轻量级且高效。本指南将引导你快速入门FastAPI和Uvicorn,包括环境配置、创建第一个应用、部署和API调用。
1. 环境准备
确保你的系统上安装了Python 3.8或更高版本。安装FastAPI、Uvicorn和其他必要的库:
pip install fastapi uvicorn pydantic
2. 创建第一个FastAPI应用
在你的项目目录中创建一个名为main.py
的文件,然后添加以下代码:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.post("/items/")
async def create_item(item: Item):
return {"item_id": 1, "item": item.json()}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
这段代码创建了一个FastAPI应用,包含两个路由:一个GET请求的根路由,返回“Hello World”消息;一个POST请求的路由,用于创建一个名为Item的模型。
3. 运行FastAPI应用
在命令行中,进入包含main.py
的目录,然后运行以下命令启动Uvicorn:
uvicorn main:app --reload
这将启动一个服务器,监听8000端口。--reload
选项在开发过程中非常有用,它会在你修改代码后自动重启服务器。
4. 测试API
在浏览器中访问http://127.0.0.1:8000
,你应该能看到“Hello World”的消息。使用Postman或curl等工具发送POST请求到http://127.0.0.1:8000/items/
,带上JSON数据,例如:
{
"name": "Example Item",
"price": 10.99
}
你将得到一个包含新创建的Item对象的信息的响应。
5. 部署应用
在生产环境中,你可以使用以下命令启动FastAPI应用:
uvicorn main:app --host=0.0.0.0 --port=80
这将使你的应用监听所有网络接口的80端口。为了提高安全性,你可能需要在生产环境中使用HTTPS,这可以通过配置Nginx或其他代理服务器来实现。
6. API调用
API的客户端可以使用HTTP库,如Python的requests
库,来与你的应用交互。例如,发送一个GET请求:
import requests
response = requests.get('http://your-production-url.com/items/')
print(response.json())
7.参考链接
fastapi-tutorial
pydantic-tutorial
7. 总结
通过这个快速入门指南,你已经了解了如何使用FastAPI创建一个基本的API,并使用Uvicorn运行它。FastAPI的强大之处在于其简洁的API定义方式、强大的数据验证和序列化支持,以及自动产生的高质量文档。Uvicorn作为高性能的ASGI服务器,为FastAPI提供了稳定、高效的运行环境。继续学习FastAPI的其他功能,如依赖注入、安全认证、GraphQL和测试,以构建更复杂的应用。