FastAPI 学习之路(三)
系列文章:
FastAPI 学习之路(一)fastapi--高性能web开发框架
之前的文章分享了如何去创建一个简单的路径的请求。那么我们这次分享的如何在请求路径中,增加参数。
我们还是在之前的请求中改造
@app.get("/")
def root():
return {"message": "Hello World"}
那么如何让它带参数呢,其实很简单
@app.get("/{name}")
def root(name):
return {"name": name}
那么我们去请求下,看下是否可以带参数,我们去带一个name。看下借口返回什么。
那么我们携带别的路径参数呢。
同样是可以返回对应的数据的。
如果我们不带这个路径参数,会返回什么呢
假如,我们想要约定name的数据是int类型,怎么约定呢
from fastapi import FastAPI
app = FastAPI()
@app.get("/{name}")
def root(name:int):
return {"name": name}
很简单的方式,就实现了如何定义路径参数为int类型,那么我们看下,如果我们传递的不是int类型,接口给我们返回的结果是什么
那么我们携带int类型的参数呢
参数可以正确返回我们想要的数据。不管是int类型的输入,还是非int类型的输入,都会有对应输出,FastAPI 通过上面的类型声明提供了对请求的自动解析。
当你打开对应的文档,你会发现文档上面已经把对应参数的需要的类型给增加上去了。
我们在文档中调试下。当你输入的类型不正确的时候,默认是无法点击Execute的。
只有输入正确格式的路径参数才会请求
假设你有另外一个路径参数one,如下
from fastapi import FastAPI
app = FastAPI()
@app.get("/{name}")
def root(name:int):
return {"name": name}
@app.get("/one")
def root():
return {"one": '雷子欢迎你'}
这个时候,你说请求one应该返回什么?
正常我们想着应该返回{"one": '雷子欢迎你'},结果却是
这是为什么呢,其实呢,这是因为fastapi会按照路径的顺序匹配,当你输入one,默认匹配的是第一个带参数的路径,那么我们现在调整下
from fastapi import FastAPI
app = FastAPI()
@app.get("/one")
def root():
return {"one": '雷子欢迎你'}
@app.get("/{name}")
def root(name:int):
return {"name": name}
这样我们再请求的时候,就会发生了变化
所以我们在编写代码的时候,一定要注意,相同匹配的时候,默认只会按照顺序匹配。
我们在之前的带参数路径请求的函数中,我们有这样的需求,我们要求只能输入我们规定的数据,才能返回对应的数据。
这个时候呢,推荐用枚举,我们看下如何实现的。
from fastapi import FastAPI
from enum import Enum
app = FastAPI()
class ModelName(str, Enum):
beijing = "1"
shanghai = "2"
@app.get("/{name}")
def root(name:ModelName):
if name==ModelName.beijing:
return "北京欢迎你"
if name==ModelName.shanghai:
return "您好上海"
我们看下接口如何返回
我们看下接口文档中如何展示
默认我们只能限定输入这两个。其他的在接口文档没法输入,在接口请求中会返回错误信息。fastapi默认会给你处理一些异常。返回比较好处理的数据。
文章首发在公众号:
FastAPI 学习之路(三)的更多相关文章
- FastAPI 学习之路(六)查询参数,字符串的校验
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(四)
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) 之前的文章分享了如何去在请求中增加参数,本文我们将分享 ...
- FastAPI 学习之路(五)
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) 我们之前的文章分享了 ...
- FastAPI 学习之路(十二)接口几个额外信息和额外数据类型
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(七)字符串的校验
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(八)路径参数和数值的校验
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(九)请求体有多个参数如何处理?
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十)请求体的字段
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十一)请求体 - 嵌套模型
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
随机推荐
- J2EE之DAO设计模式及简单实现
JAVAEE(Java Enterprise Edition ) 模式 : DAO模式 因此在了解DAO模式之前,我们先来学习一下Java EE的体系结构: (一)JavaEE体系结构 客户端: 客户 ...
- openresty HTTP status constants nginx api for lua
https://github.com/openresty/lua-nginx-module context: init_by_lua, set_by_lua, rewrite_by_lua, acce ...
- int索引转Excel列名(JavaScript版)
indexToExcelColumn = (index)=>{ // 自然数 if (typeof index !== 'number') return false; ...
- Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)
一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...
- springmvc图片上传、json
springmvc的图片上传 1.导入相应的pom依赖 <dependency> <groupId>commons-fileupload</groupId> < ...
- 【数据库上】 第四讲 E-R模型基础知识
第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...
- eclipse的C/C++开发搭建
环境 宿主机:ubuntu 16.04 交叉编译:gcc-linaro-4.9-2014.11 ubuntu自带源 eclipse 安装(想使用新版直接跳过) 安装eclipse sudo apt-g ...
- Linux - 解决使用 apt-get 安装 yum 的时耗报 E: Unable to locate package yum 的错误
问题背景 在 Linux 系统下使用 apt-get 命令安装 yum 库报错 apt-get install yum E: Unable to locate package yum 问题解决 一行命 ...
- AgileConfig轻量级配置中心1.4.0发布,重构了发布功能
加入 NCC 先说一个事,AgileConfig 在 7 月底终于通过了 NCC 社区的审核,正式成为了 NCC 大家庭的一员.这对 AgileConfig 来说是一个里程碑,希望加入 NCC 后能更 ...
- el-table回显遇到的坑
使用element ui 的el-table在做到复选框回显勾中的问题时,整整困惑了我一天,当时百度了一下,好多人都说是 this.$nextTick(() => {})的问提,在组件中监听w ...