FastAPI快速入门教程2路径参数和类型及接收json数据

路径参数

可以用类似Python格式化字符串使用的相同语法来声明路径参数或变量。

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id):
    return {"item_id": item_id}

路径参数item_id的值将递给你的函数。

打开http://127.0.0.1:8000/items/foo,你会看到这样的响应。

{"item_id":"foo"}

可以在函数中使用标准的 Python 类型提示来声明路径参数的类型。

from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

声明路径参数的类型将给你的函数提供编辑器支持,包括错误检查、自动完成等。

打开http://127.0.0.1:8000/items/3,那么你会看到下面的响应。

{"item_id":3}

打开http://127.0.0.1:8000/items/foo,将有HTTP错误。

{
    "detail": [
        {
            "loc": [
                "path",
                "item_id"
            ],
            "msg": "value is not a valid integer",
            "type": "type_error.integer"
        }
    ]
}

打开http://127.0.0.1:8000/items/4.2也会有类似宝座,FastAPI同时提供了数据解析和数据验证。

打开浏览器http://127.0.0.1:8000/docs,文档也有更新。

FastAPI快速入门教程2路径参数和类型及接收json数据

http://127.0.0.1:8000/redoc如下:

FastAPI快速入门教程2路径参数和类型及接收json数据

所有的数据验证都是由pydantic在幕后进行的,可以对str、float、bool以及许多其他复杂的数据类型使用相同的类型声明。

路径的顺序很重要,固定路径建议放在首位。比如同时/users/me和/users/{user_id}这样的路径来获取某个特定用户的ID的数据。

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/me")
async def read_user_me():
    return {"user_id": "the current user"}

@app.get("/users/{user_id}")
async def read_user(user_id: str):
    return {"user_id": user_id}

请求体接收JSON数据

请求主体是由客户发送给你的API的数据。响应体是你的API发送给客户端的数据。你的API几乎总是要发送响应体。但是客户并不一定需要发送请求体。

注意:要发送数据,你应该使用POST(最常见的方法)、PUT、DELETE或PATCH。用GET请求发送主体在规范中没有定义行为。

尽管如此,FastAPI还是支持使用GET请求,不过只适用于非常复杂或极端的用例。由于不鼓励使用GET,所以在使用GET时,Swagger UI的交互式文档不会显示body的文档,而且中间的代理可能不支持它。

使用pydantic来声明JSON数据模型(Data Models或Data Shapes)。
首先,你需要从pydantic中导入BaseModel,然后用它来创建定义你想要接收的模式或数据形状的子类。然后将你的数据模型声明为继承自BaseModel的类,所有属性使用标准的Python类型。


from typing import Optional

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: Optional[str] = None
    price: float
    tax: Optional[float] = None

app = FastAPI()

@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item):
    return {"item_id": item_id, **item.dict()}

astAPI将。

文档也会自动更新:

FastAPI快速入门教程2路径参数和类型及接收json数据

FastAPI快速入门教程2路径参数和类型及接收json数据

IDE的自动完成提示:

FastAPI快速入门教程2路径参数和类型及接收json数据

类型错误检查:


FastAPI快速入门教程2路径参数和类型及接收json数据

pydantic PyCharm插件来改善你的编辑器支持。VS Code,那么你就可以通过Pylance获得最好的开发者体验。

更多关于FastAPI的信息

FastAPI可以涵盖后端框架所需的大部分用例,甚至包括那些不是严格意义上的API。你可以深入研究文档以解决你的特定用例。

其他资料:

小结

在本教程中,你了解了FastAPI,以及如何使用它来创建生产级的API。

你现在已经准备好开始为你的项目创建你自己的高性能的API了。如果你想更深入地了解FastAPI的世界,那么你可以遵循FastAPI文档中的官方 User Guide

展开阅读全文

页面更新:2024-05-19

标签:路径   参数   类型   数据   编辑器   函数   主体   属性   入门教程   定义   声明   提示   错误   快速   文档   标准   项目   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top