系列文章:

  FastAPI 学习之路(一)fastapi--高性能web开发框架

  FastAPI 学习之路(二)

  FastAPI 学习之路(三)

  FastAPI 学习之路(四)

 我们之前的文章分享了,如何增加参数,那么我们这次分享来看下请求体。

  什么是请求体:请求体是客户端发送给 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时候如何返回呢?

可以看到这样是符合我们需求的。

 

FastAPI 学习之路(五)的更多相关文章

  1. FastAPI 学习之路(十五)响应状态码

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  2. FastAPI 学习之路(五十六)将token存放在redis

    在之前的文章中,FastAPI 学习之路(二十九)使用(哈希)密码和 JWT Bearer 令牌的 OAuth2,FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2,Fa ...

  3. FastAPI 学习之路(五十五)操作Redis

    之前我们分享了操作关系型数据库,具体文章, FastAPI 学习之路(三十二)创建数据库 FastAPI 学习之路(三十三)操作数据库 FastAPI 学习之路(三十四)数据库多表操作 这次我们分享的 ...

  4. FastAPI 学习之路(六)查询参数,字符串的校验

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  5. FastAPI 学习之路(十二)接口几个额外信息和额外数据类型

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  6. FastAPI 学习之路(七)字符串的校验

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  7. FastAPI 学习之路(八)路径参数和数值的校验

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  8. FastAPI 学习之路(九)请求体有多个参数如何处理?

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  9. FastAPI 学习之路(十)请求体的字段

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

随机推荐

  1. promise例题

    let promise = new Promise(resolve => { console.log('Promise'); resolve(); }); promise.then(functi ...

  2. PyQt4制作GUI

    时间:2018-11-30 记录:byzqy 标题:PyQt4入门学习笔记(一) 地址:https://www.cnblogs.com/chuxiuhong/p/5865201.html 标题:PyQ ...

  3. ❤️用武侠小说的形式来阅读LinkedList的源码,绝了!

    一.LinkedList 的剖白 大家好,我是 LinkedList,和 ArrayList 是同门师兄弟,但我俩练的内功却完全不同.师兄练的是动态数组,我练的是链表. 问大家一个问题,知道我为什么要 ...

  4. Servlet 之文件下载

    Servlet 之文件下载 import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; impor ...

  5. 01_Keil与Proteus联合仿真的注意事项

    01. 关于keil5和Proteus8的联合仿真的操作步骤,这里就不细说,给个链接,步骤差不多是最齐全的 CSDN博客链接:https://blog.csdn.net/wzk456/article/ ...

  6. WEB漏洞——SQL

    由于我的博客是学到渗透的时候才做的,没有关于WEB漏洞的笔记,现在发现WEB层面的漏洞有些不太熟悉了,边写一下笔记边复习一下,就从sql注入开始吧 话不多说先上大佬写的表[ctfhub]SQL注入 - ...

  7. 连接Redis服务

    1.命令 redis-cli -h host -p port -a password 2.参数 host:远程redis服务器host port:远程redis服务端口 password:远程redi ...

  8. shell循环语句until

    until 条件 do 执行命令 done until 循环与 while 循环在处理方式上刚好相反. 当条件成立的时候,停止循环.

  9. Operator 示例:使用 Redis 部署 PHP 留言板应用程序

    「Kubernetes 官方示例:使用 Redis 部署 PHP 留言板应用程序」Operator 化. 源码仓库:https://github.com/jxlwqq/guestbook-operat ...

  10. servlet请求转发于重定向

    请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用非常广泛. 一. 请求的转发 Servlet接收到浏览器端请求后,进行一定的处理,先不进行响应,而是在服务器端内部" ...