系列文章:

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

  FastAPI 学习之路(二)

之前的文章分享了如何去创建一个简单的路径的请求。那么我们这次分享的如何在请求路径中,增加参数。

  我们还是在之前的请求中改造

@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 学习之路(三)的更多相关文章

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

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

  2. FastAPI 学习之路(四)

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) 之前的文章分享了如何去在请求中增加参数,本文我们将分享 ...

  3. FastAPI 学习之路(五)

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 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. assign()与create()的区别

    Q:assign()与create()的区别? A:let obj = Object.assign(targetObj, -sourceObj) 作用:将一个或多个源对象自身的可枚举属性与目标对象的属 ...

  2. C++、Java、Python、Linux、Go、前端、算法,慕课资料分享

    C++.Java.Python.Linux.Go.前端.算法,慕课资料分享 微信公众号:大道同行JAVA 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 又见面了.废话不多说,最近多了一些在 ...

  3. WEB安全性测试之文件上传漏洞

    1.漏洞描述:文件上传漏洞,是指可以利用WEB上传一些特定的文件包含特定代码如(<?php phpnfo;?> 可以用于读取服务器配置信息.上传成功后可以点击) 上传漏洞是指用户上传了一个 ...

  4. AntDesign VUE:Model组件的Button的事件this指向undefined的问题(箭头函数)

    问题 一个很简单的this指向问题引起的报错: 记录下来主要是想看看这玩意到底指向哪里: 真不戳 解决方法 ES6的箭头函数,有人理解它就是没有this指向,我个人理解是它的this指向函数体的上一级 ...

  5. Excel导入保存附件和解析数据

    Excel导入保存附件和解析数据 一,前端上传附件的组件 1.先给一个下载模板的按钮 // 下载Excel模板 downLoadExcel: function () { window.open(GLO ...

  6. Java匿名内部类只可使用一次的理解

    匿名内部类只能使用一次,就不能在使用. 为了验证"只能使用一次"的实际含义,首先在程序中实例化了两个对象.并且在相应的类中加入了实现接口的匿名内部类: package com.An ...

  7. 【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token

    问题描述 在APIM中配置对传入的Token进行预验证,确保传入后端被保护的API的Authorization信息正确有效,可以使用validate-jwt策略.validate-jwt 策略强制要求 ...

  8. 网络前置任务(Pretext task)和下游任务(downstream tasks)

    Pretext task 可以理解为是一种为达到特定训练任务而设计的间接任务. 比如,要训练一个网络来对 ImageNet 分类,可以表达为 $f_{\theta}(x): x \rightarrow ...

  9. Set代码

    现有一整数集(允许有重复元素),初始为空.我们定义如下操作:add x 把 x 加入集合del x 把集合中所有与 x 相等的元素删除ask x 对集合中元素x的情况询问 对每种操作,我们要求进行如下 ...

  10. css3 横屏

    @media screen and (orientation: portrait) { html{ width : 100vmin; height : 100vmax; } body{ width : ...