本文主要记录fastapi实现一个接口多个请求方式的实现;例如同样的接口,既可以通过查询参数或路径参数的方式请求得到数据,也可以通过发送请求体的方式得到响应。

常见的请求方式

  1. Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)
  2. Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
  3. Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)
  4. Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)
  5. Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)
  6. Trace 回显服务器收到的请求,用于测试和诊断
  7. opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)
  8. Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器
  • get请求无消息体,只能携带少量数据,且不安全;get请求将数据放在url地址中
  • post请求有消息体,可以携带大量数据,且安全;post请求将数据放在消息体body中
  • GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

FastAPI设置通用路由

FastAPI内写接口都是通过@app.methods的方式实现的,这样的方式限定了请求方式为某一种,在某些场景下不能满足我们的开发需求,所以需要实现同一路由多种请求方式。这里的@appmethods都是代指,官网上也没写,看了一下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)——设置通用路由相关推荐

  1. FastAPI从入门到实战(11)——表单请求与上传文件

    本文主要记录表单的数据请求以及上传不同大小的文件.上传多个文件.获取文件信息等相关内容. 表单请求 @app07.post("/stu07/form") def stu07_for ...

  2. AI深度学习入门与实战15 TensorBoard:实验统计分析助手

    在 13 和 14 讲中,我们一同了解了 TensorFlow.通过 TensorFlow,我们可以将设计好的理论模型变成实际可用的真正的模型.这一讲,我们将学习一个高效的实验分析助手:TensorB ...

  3. FastAPI从入门到实战(0)——初识FastAPI

    本文主要介绍一下FastAPI是什么,多数内容摘自官网:https://fastapi.tiangolo.com/zh/ FastAPI是什么 FastAPI 是一个用于构建 API 的现代.快速(高 ...

  4. FastAPI从入门到实战(12)——错误处理

    错误提示是非常重要的,比如权限控制.资源控制等场景,需要服务器返回给用户错误提示,包括状态码和提示等内容,所以本文就主要记录FastAPI里的错误处理相关的内容 抛出一个HTTPException @ ...

  5. Redis6入门到实战------思维导图+章节目录

    Redis学习大纲 思维导图 思维导图 Redis6入门到实战------1.NoSQL数据库简介 地址: Redis6入门到实战------2.Redis6概述和安装 地址: Redis6入门到实战 ...

  6. vue设置cookie的domain无效_【Vue.js入门到实战教程】16Tailwind 与 Bootstrap 的区别和使用入门...

    来源 | https://xueyuanjun.com/post/22065我们知道,从 Laravel 8 开始,自带前端脚手架代码默认兼容 Tailwind CSS 框架,取代了之前的 Boots ...

  7. python编程入门与案例详解pdf-Flutter技术入门与实战 PDF 清晰版

    给大家带来的一篇关于Flutter相关的电子书资源,介绍了关于Flutter入门.Flutter实战.Flutter技术方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小162.5 MB, ...

  8. Netty入门与实战:仿写微信IM即时通讯系统

    转载自:Netty入门与实战:仿写微信IM即时通讯系统 Netty是互联网中间件领域使用最广泛最核心的网络通信框架,几乎所有互联网中间件或者大数据领域均离不开Netty,掌握Netty是作为初中级工程 ...

  9. 【微信小程序】微信小程序入门与实战-个人笔记

    微信小程序入门与实战 文章目录 微信小程序入门与实战 1 初识微信小程序 1-1 2020版重录说明 1-2 下载小程序开发工具 1-3 新建小程序项目 1-4 小程序appid的注册 1-5 新版小 ...

最新文章

  1. 计算机视觉不可能凉!
  2. aide java 线程类_aide_Java常用关键字、方法使用实例
  3. 机器人滚边有波浪_汽车开启件机器人滚边缺陷分析与调整
  4. 计算机网络实验(华为eNSP模拟器)——第六章 密码模式和AAA模式
  5. 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)
  6. 信息学奥赛一本通 1844:【06NOIP提高组】金明的预算方案 | 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案
  7. scala 模式匹配详解 1
  8. oracle显示数据中心类异常,Oracle_10g数据库基础教程-参考答案
  9. 日常赠书 | 王者荣耀的觉悟AI是怎么训练的?
  10. 程序员专属段子集锦 3/10
  11. java 构造块_java中构造方法、普通块、静态代码块、构造块的执行顺序
  12. protostuff java_protostuff 及其注意事项
  13. java实现zip文件压缩和解压
  14. 如何让计算机从固态硬盘启动不了,电脑设置固态硬盘启动的方法
  15. 《matlab数学建模方法与实践,数理统计及其在数学建模中的实践(使用MATLAB)
  16. 今日头条面试——iOS开发岗
  17. kindle长期未使用,界面显示电池感叹号
  18. su联合推拉使用方法_紫天学习星球教学:联合推拉插件完全功能使用详解(中文)...
  19. CAD2018安装计算机黑屏,3dmax2018一打开就闪退的三种原因和解决方法
  20. linux下播放蓝光iso,如何播放蓝光原盘ISO文件?

热门文章

  1. gff格式转gggenes的输入格式
  2. 一个串口接2个设备_姑娘2个月相亲28次!崩溃大喊:我像一个没有感情的机器...
  3. 微信支付ajax实现支付,微信扫码支付模式二支付状态Ajax轮询实例
  4. 最常见的十四种购买心理
  5. Linux 是一个适应性很强的平台,支持多种使用模型
  6. lm91000——stm32 -气体传感器(氧气 硫化氢,氨气)
  7. 掌握这7点,让SEO效果事半功倍
  8. 广告无处不在,如何利用广告去推广自己的产品?
  9. 网络层协议详解(IP协议、ICMP协议和ARP协议)
  10. 关于javascript的12种淫思巧技(一)