FastAPI 学习之路(五)
系列文章:
FastAPI 学习之路(一)fastapi--高性能web开发框架
什么是请求体:请求体是客户端发送给 API 的数据。
什么是响应体:响应体是 API 发送给客户端的数据。
大部分的请求都会有请求体的。你不能使用 GET 操作(HTTP 方法)发送请求体。
我们去写一个例子,去定义一下请求体
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时候如何返回呢?
可以看到这样是符合我们需求的。
相关文章
- 一篇运维老司机的大数据平台监控宝典(2)-联通大数据集群平台监控体系详解
- 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解
- 空中换引擎 博时基金数字化转型经验谈
- 如何高效地学习编程语言
- 作为一名阿里巴巴数据分析大牛,送给学弟学妹的经验积分
- 为什么要学习R语言
- Hadoop大数据分析平台的介绍性讨论
- 最全面的Spring学习笔记
- 16个用于数据科学和机器学习的顶级平台
- 给有抱负的数据科学家的六条建议
- 如何做一枚合格的数据产品经理
- 除Kaggle外,还有哪些顶级数据科学竞赛平台
- 一个鲜为人知却可以保护隐私的训练方法:联合学习
- 干货 :送你12个关于数据科学学习的关键提示(附链接)
- 大数据行业有多少种工作岗位,各自的技能需求是什么?
- 中国移动研究院常耀斌:商用大数据平台的研发之路
- 这些数据科学家必备的技能,你拥有哪些?
- 自学成才的开发者有何优势和劣势?
- Gartner报告:正处于数据科学与机器学习工具 “大爆炸”的时代
- Ready Computing借助InterSystems IRIS医疗版为医疗机构提供具有高度互操作性和可扩展性的解决方案