系列文章:

  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. linux上安装Docker (非常简单的安装方法) 2019

    Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例, 可以将其启动.开始.停止.删除.而这些容器都是 ...

  2. 学习小记: Kaggle Learn - Machine Learning Explainability

    Method Feature(s) Sample(s) Result Value/Feature Permutation Importance 1 all validation samples Sin ...

  3. SpringBoot笔记(5)

    一.Web原生组件注入 1.使用Servlet API @ServletComponentScan(basePackages = "com.atguigu.admin") :指定原 ...

  4. Packing问题

    问题描述:如何把任意数量任意尺寸矩形集无重复的放到一个面积最小的封闭矩形中. 算法思想:(为了便于描述,把要找的封闭矩形记为a,封闭矩形的集合记为as,把矩形集合记为rs,n为rs中矩形的个数,把可以 ...

  5. Mybatis-plus<三> MybatisPlus条件构造器

    Mybatis-plus<三> MybatisPlus条件构造器 Demo GitHub下载地址:https://github.com/RJvon/Mybatis_plus_demo My ...

  6. linux 性能统计命令

    命令1 性能压力测试,yes持续输出30s到设备中空文件,然后杀掉进程 { yes> /dev/null & } && sleep 30 && ps -e ...

  7. Linux网络编程:原始套接字简介

    Linux网络编程:原始套接字编程 一.原始套接字用途 通常情况下程序员接所接触到的套接字(Socket)为两类: 流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的T ...

  8. web基础常识

    1.b/s架构 2.tcp协议 3.web服务器

  9. struts2执行流程和架构图

    一.struts2执行流程 二.架构图 只需要编写黄色部分的代码:

  10. Sentry 后端监控 - 最佳实践(官方教程)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...