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 学习之 ...
随机推荐
- 关于ubuntu使用的那些事儿
时间:2019-04-09 整理:PangYuaner 标题:Ubuntu18.04安装微信(Linux通用) 地址:https://www.cnblogs.com/dotnetcrazy/p/912 ...
- Spring笔记(4)
集成Web环境 1.步骤 导入Spring-web坐标 <!-- spring-web--> <dependency> <groupId>org.springfra ...
- JAVA 之 每日一记 之 算法( 给你一个Excel表列序号,返回出它对应的数字 )
代码结果:(只想要代码的可以离开了,代码给你了,绝对能用的.想要思路的往下看.) class Solution { public int titleToNumber(String s) { int a ...
- 【HMS Core 6.0全球上线】Network Kit全链路网络加速技术,应用无惧网络拥塞
HMS Core 6.0已于7月15日全球上线,本次版本向广大开发者开放了众多全新能力与技术.其中HMS Core Network Kit开放了全链路网络加速技术,助力开发者为用户提供低时延的畅快网络 ...
- 经典多级时间轮定时器(C语言版)
经典多级时间轮定时器(C语言版) 文章目录 经典多级时间轮定时器(C语言版) 1. 序言 2. 多级时间轮实现框架 2.1 多级时间轮对象 2.2 时间轮对象 2.3 定时任务对象 2.4 双向链表 ...
- java版gRPC实战之三:服务端流
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- .NET5修改配置不重启自动生效
.NET Core,.NET5默认配置都是只加载一次,修改配置时都需要重启才能生效,如何能修改即时生效呢,下面来演示一遍. 一.设置配置文件实时生效 1.1配置 在Program.cs的CreateH ...
- gitlab安装CI问题汇总
0.设置gitlab获取代码的存放位置 vim /etc/gitlab-runner/config.toml 1.unable to access http://gitlab-ci-token:xxx ...
- Java环境搭建与HelloWprld—改变世界的第一步
1. JDK下载 访问oracle官网:http://www.oracle.com 在首页点击Downloads,进入oracle软件下载页. 在下载页面,点击Java. 选择Java (JDK) f ...
- 在PHP中如何为匿名函数指定this?
在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了. 关于闭包匿名函数,在JS中有个很典型的问题就是要 ...