欢迎访问宙启技术站
智能推送

Python中使用FastAPI快速开发可扩展的API服务

发布时间:2023-12-11 11:04:15

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都是一个非常强大和灵活的选择。