系列文章:

  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. Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!

    d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...

  2. vue-父子组件之传值和单项数据流问题

    前言 我们知道 vue 中父子组件的核心概念是单项数据流问题,props 是单项传递的.那究竟什么是单项数据流问题,这篇文章来总结一下关于这个知识点的学习笔记. 正文 1.父组件传值给子组件 < ...

  3. Java特性和优势

    Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性

  4. Nginx版本平滑升级方案

    背景:由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复. Nginx平滑升级方案 1.案例采用版本介绍 旧版本 nginx- ...

  5. Java基础(一)——面向对象

    一.对象 1.成员变量和局部变量的区别 两类变量同名时,局部变量具有更高的优先级. 作用域不同:局部变量的作用域仅限于定义它的方法,作用于函数或者语句中:成员变量的作用域在整个类中. 初始值不同:Ja ...

  6. Robot Framework(10)- 使用资源文件

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 啥是资源文件 资 ...

  7. JDK7u21反序列化详解

    目录 前言 环境 倒序分析 TemplatesImpl AnnotationInvocationHandler HashMap 总结 前言 听说jdk7u21的反序列化涉及的知识量很多,很难啃,具体来 ...

  8. freeswitch python模块

    概述 freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等.freeswitch在使用python做业务开发时,有俩种接入方式,一种是ES ...

  9. 如何在线安全清理mysql慢日志

    部门mysql数据库的服务器磁盘空间快满了,查看了下磁盘的慢日志,发现占了50多个g,百度了资料后删除成功,现在和大家分享下我清理的过程,或许有更好的办法. 1.首先连接进入mysql,查看慢日志的状 ...

  10. 论文解读《Momentum Contrast for Unsupervised Visual Representation Learning》俗称 MoCo

    论文题目:<Momentum Contrast for Unsupervised Visual Representation Learning> 论文作者: Kaiming He.Haoq ...