Python中使用FastAPI快速开发可扩展的API服务
FastAPI是一个高性能的Web框架,可以用于快速开发可扩展的API服务。它基于Python 3.6+的新特性,使用异步编程来提升性能,并且提供了自动化的文档生成功能。
首先,我们需要安装FastAPI和uvicorn这两个库,可以使用pip命令进行安装:
pip install fastapi uvicorn
接下来,我们来创建一个简单的API服务,提供一个简单的加法功能。创建一个名为main.py的文件,然后在文件中编写以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/sum/{num1}/{num2}")
async def sum_numbers(num1: int, num2: int):
return {"result": num1 + num2}
这个代码定义了一个FastAPI应用对象app,并创建了一个路由处理函数sum_numbers。这个函数接受两个整数参数num1和num2,并返回它们的和。
接下来,我们可以使用uvicorn命令来运行这个API服务。在命令行中执行以下命令:
uvicorn main:app --reload
这个命令会启动一个web服务器,并监听本地的8000端口。我们可以在浏览器中输入http://localhost:8000/sum/1/2来测试API服务。你应该会得到以下输出:
{"result": 3}
FastAPI还提供了自动生成API文档的功能。在浏览器中访问http://localhost:8000/docs,你会看到一个自动生成的交互式API文档。这个文档详细描述了API的各个端点、参数和返回结果,并提供了测试API的功能。
除了基本的路由处理功能,FastAPI还支持更复杂的功能,如请求验证、响应模型转换、异常处理等。以下是一个稍微复杂一些的例子:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
items = []
@app.post("/items/")
async def create_item(item: Item):
items.append(item)
return {"result": "Item created"}
@app.get("/items/{item_id}")
async def get_item(item_id: int):
if item_id >= len(items):
raise HTTPException(status_code=404, detail="Item not found")
return items[item_id]
这个例子中,我们定义了一个Item模型,其中包含name和price两个字段。然后,我们使用这个模型作为参数来处理创建新的item的POST请求,并将item添加到一个列表中。我们还定义了一个GET请求来获取指定id的item,如果找不到对应id的item,则会抛出一个404异常。
这只是FastAPI的一小部分功能,它还提供了更多的功能来帮助你快速开发可扩展的API服务。无论是开发小型的API还是大规模的分布式系统,FastAPI都是一个非常强大和灵活的选择。
