FastAPI 学习之路(五)
系列文章:
FastAPI 学习之路(一)fastapi--高性能web开发框架
什么是请求体:请求体是客户端发送给 API 的数据。
什么是响应体:响应体是 API 发送给客户端的数据。
大部分的请求都会有请求体的。你不能使用 GET 操作(HTTP 方法)发送请求体。
我们去写一个例子,去定义一下请求体
1 2 3 4 5 6 7 8 9 10 11 12 | from typing import Optional from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str desc: Optional[ str ] = None price: float @app .post( "/items/" ) def create_item(item: Item): return item |
那么我们部署下,然后用postman请求下
可以正常返回我们预期的结果。
我们在代码中创建数据模型,然后数据模型声明为继承自 BaseModel
的类。
使用标准的 Python 类型来声明所有属性。
当一个模型属性具有默认值时,它不是必需的。否则它是一个必需属性。将默认值设为 None
可使其成为可选属性。我们去请求下,当我们不传递desc看下。

从结果中,我们可以看出,当我们没有传递参数的时候,默认是null,那么我看下如果我们没有定义可选属性的不传递,接口会怎么返回给我们呢。
我们可以看到,接口已经返回了对应的错误。所以当我们在定义的时候就可以对对应的参数进行是否是可选择的参数。其实我们在定义的时候,也定义了类型,比如我们对应price定义是一个float,但是呢,我们现在给它传递一个str类型,比如五角。
接口返回的是一个类型错误,因为后台在处理的时候呢,默认转化了类型,转化失败,就直接fastapi自动处理完毕了。并且返回了统一格式的返回值。
我们看下接口文档。
接口文档默认定义模型将成为生成的 OpenAPI 模式的一部分,并且在交互式 API 文档中展示。
当然我们前面的请求体是没有做处理,其实我们在实际中还是要处理呢,那么我们如何处理呢,其实很简单,我们看下,当价格大于100,我们返回太贵了。 (西瓜要是100一斤,也很贵了。)
如何去实现呢。
from typing import Optional from fastapi import FastAPI from pydantic import BaseModel class Item(BaseModel): name: str desc: Optional[str] = None price: float app = FastAPI() @app.post("/items/") async def create_item(item: Item): if item.price>100: return "太贵了" return item
这样就完成了,那么我们看下。请求是否返回正确,当传递的价格大于100
当我们去传递的价格小于100时候如何返回呢?
可以看到这样是符合我们需求的。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2017-09-25 一则小脚本(工作中用)