FastAPI从入门到实战(15)——设置通用路由
本文主要记录fastapi实现一个接口多个请求方式的实现;例如同样的接口,既可以通过查询参数或路径参数的方式请求得到数据,也可以通过发送请求体的方式得到响应。
常见的请求方式
- Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
- Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
- Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
- Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
- Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)
- Trace 回显服务器收到的请求,用于测试和诊断
- opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)
- Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器
- get请求无消息体,只能携带少量数据,且不安全;get请求将数据放在url地址中
- post请求有消息体,可以携带大量数据,且安全;post请求将数据放在消息体body中
- GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
FastAPI设置通用路由
FastAPI内写接口都是通过@app.methods
的方式实现的,这样的方式限定了请求方式为某一种,在某些场景下不能满足我们的开发需求,所以需要实现同一路由多种请求方式。这里的@app
和methods
都是代指,官网上也没写,看了一下github和源码,大致弄明白了;
源码
从这里就能看出来,上面的那种实现方式也是依赖于api_route
方法,所以直接利用api_route
方法实现即可。
def get(self,path: str,*,......) -> Callable[[DecoratedCallable], DecoratedCallable]:return self.api_route(path=path,response_model=response_model,status_code=status_code,tags=tags,dependencies=dependencies,summary=summary,description=description,response_description=response_description,responses=responses,deprecated=deprecated,methods=["GET"],operation_id=operation_id,......)
代码实现
@app.api_route("/test", methods=["GET", "POST", "DELETE"])
async def test(request: Request):return {"method": request.method}
如上,方法就很简单,利用
api_route
方法,设置路径,同时设置methods
列表即可,文档与测试如下:
感谢阅读!
九陌斋地址:https://blog.jiumoz.com/archives/fastapi-cong-ru-men-dao-shi-zhan-15-she-zhi-tong-yong-lu-you
欢 迎 关 注 博 主 个 人 小 程 序!
FastAPI从入门到实战(15)——设置通用路由相关推荐
- FastAPI从入门到实战(11)——表单请求与上传文件
本文主要记录表单的数据请求以及上传不同大小的文件.上传多个文件.获取文件信息等相关内容. 表单请求 @app07.post("/stu07/form") def stu07_for ...
- AI深度学习入门与实战15 TensorBoard:实验统计分析助手
在 13 和 14 讲中,我们一同了解了 TensorFlow.通过 TensorFlow,我们可以将设计好的理论模型变成实际可用的真正的模型.这一讲,我们将学习一个高效的实验分析助手:TensorB ...
- FastAPI从入门到实战(0)——初识FastAPI
本文主要介绍一下FastAPI是什么,多数内容摘自官网:https://fastapi.tiangolo.com/zh/ FastAPI是什么 FastAPI 是一个用于构建 API 的现代.快速(高 ...
- FastAPI从入门到实战(12)——错误处理
错误提示是非常重要的,比如权限控制.资源控制等场景,需要服务器返回给用户错误提示,包括状态码和提示等内容,所以本文就主要记录FastAPI里的错误处理相关的内容 抛出一个HTTPException @ ...
- Redis6入门到实战------思维导图+章节目录
Redis学习大纲 思维导图 思维导图 Redis6入门到实战------1.NoSQL数据库简介 地址: Redis6入门到实战------2.Redis6概述和安装 地址: Redis6入门到实战 ...
- vue设置cookie的domain无效_【Vue.js入门到实战教程】16Tailwind 与 Bootstrap 的区别和使用入门...
来源 | https://xueyuanjun.com/post/22065我们知道,从 Laravel 8 开始,自带前端脚手架代码默认兼容 Tailwind CSS 框架,取代了之前的 Boots ...
- python编程入门与案例详解pdf-Flutter技术入门与实战 PDF 清晰版
给大家带来的一篇关于Flutter相关的电子书资源,介绍了关于Flutter入门.Flutter实战.Flutter技术方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小162.5 MB, ...
- Netty入门与实战:仿写微信IM即时通讯系统
转载自:Netty入门与实战:仿写微信IM即时通讯系统 Netty是互联网中间件领域使用最广泛最核心的网络通信框架,几乎所有互联网中间件或者大数据领域均离不开Netty,掌握Netty是作为初中级工程 ...
- 【微信小程序】微信小程序入门与实战-个人笔记
微信小程序入门与实战 文章目录 微信小程序入门与实战 1 初识微信小程序 1-1 2020版重录说明 1-2 下载小程序开发工具 1-3 新建小程序项目 1-4 小程序appid的注册 1-5 新版小 ...
最新文章
- 计算机视觉不可能凉!
- aide java 线程类_aide_Java常用关键字、方法使用实例
- 机器人滚边有波浪_汽车开启件机器人滚边缺陷分析与调整
- 计算机网络实验(华为eNSP模拟器)——第六章 密码模式和AAA模式
- 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)
- 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
- scala 模式匹配详解 1
- oracle显示数据中心类异常,Oracle_10g数据库基础教程-参考答案
- 日常赠书 | 王者荣耀的觉悟AI是怎么训练的?
- 程序员专属段子集锦 3/10
- java 构造块_java中构造方法、普通块、静态代码块、构造块的执行顺序
- protostuff java_protostuff 及其注意事项
- java实现zip文件压缩和解压
- 如何让计算机从固态硬盘启动不了,电脑设置固态硬盘启动的方法
- 《matlab数学建模方法与实践,数理统计及其在数学建模中的实践(使用MATLAB)
- 今日头条面试——iOS开发岗
- kindle长期未使用,界面显示电池感叹号
- su联合推拉使用方法_紫天学习星球教学:联合推拉插件完全功能使用详解(中文)...
- CAD2018安装计算机黑屏,3dmax2018一打开就闪退的三种原因和解决方法
- linux下播放蓝光iso,如何播放蓝光原盘ISO文件?
热门文章
- gff格式转gggenes的输入格式
- 一个串口接2个设备_姑娘2个月相亲28次!崩溃大喊:我像一个没有感情的机器...
- 微信支付ajax实现支付,微信扫码支付模式二支付状态Ajax轮询实例
- 最常见的十四种购买心理
- Linux 是一个适应性很强的平台,支持多种使用模型
- lm91000——stm32 -气体传感器(氧气 硫化氢,氨气)
- 掌握这7点,让SEO效果事半功倍
- 广告无处不在,如何利用广告去推广自己的产品?
- 网络层协议详解(IP协议、ICMP协议和ARP协议)
- 关于javascript的12种淫思巧技(一)