pythonFastapiCookie和Header
简单唠叨下
前面唠了一些关于请求体的一些事情,这次主要唠下 cookie 和header 的东西,cookie 、header 和Path 、Query 一样都是继承公共的Param 类,传参的一些参数都差不多是一样的。
区别的就是 Path 、Query 是在postman 中的Param 中放入参数进行请求,而cookie 、header 则是在postman 中的Headers 中放入参数进行请求Cookie参数
导入 Cookie
声明 Cookie 参数的结构与声明 Query 参数和 Path 参数时相同。
第一个值是参数的默认值,同时也可以传递所有验证参数或注释参数,来校验参数: from typing import Optional from fastapi import Cookie, FastAPI app = FastAPI() @app.get("/items/") async def read_items(ads_id: Optional[str] = Cookie(...)): return {"ads_id": ads_id}
Cookie(...) 的默认值设置的是必填参数,如果请求时不填写则抛出异常
Cookie(None) 的默认值设置的是None ,请求时则不填写,不会抛出,请求结果返回是null 值
启动服务: PS E:git_codepython-codefastapiProject> uvicorn cookie_main:app --reload
请求接口:
GET http://127.0.0.1:8000/items
请求参数:
KEY
VALUE
Cookie
ads_id=hello
请求结果:{ "ads_id": "hello" } Header参数
首先导入 Header
然后使用和Path 、Query 和Cookie 一样的结构定义 Header 参数
第一个值是默认值,你可以传递所有的额外验证或注释参数:from typing import Optional from fastapi import FastAPI, Header app = FastAPI() @app.get("/items/") def read_items(user_agent: Optional[str] = Header(...)): return {"User-Agent": user_agent}
Header(...) 的默认值设置的是必填参数,如果请求时不填写则抛出异常。但是如果你在工具(例如:postman 、浏览器 )中请求接口,工具会默认给你提供一个user_agent ,所以自然就看不到报错了。
Header 在 Path 、Query 和 Cookie 提供的功能之上有一点额外的功能:
1、 user-agent 这样的变量在Python中是无效的,默认情况下, Header 将把参数名称的字符从下划线 _ 转换为连字符 - 来提取并记录 headers .
2、HTTP headers 中对大小写不敏感,只要传的跟HTTP 头信息规定的字段一样,会自动转换。
启动服务:PS E:git_codepython-codefastapiProject> uvicorn header_main:app --reload
请求接口:
GET http://127.0.0.1:8000/items
请求参数:
KEY
VALUE
user-agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
请求结果:{ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36" }
但是有些时候出于某些原因,需要禁用下划线到连字符的自动转换,设置Header 的参数 convert_underscores 为 False 即可:from typing import Optional from fastapi import FastAPI, Header app = FastAPI() @app.get("/items/") def read_items(user_agent: Optional[str] = Header(..., convert_underscores=False)): return {"User_Agent": user_agent}
启动服务:PS E:git_codepython-codefastapiProject> uvicorn header_main:app --reload
请求接口:
GET http://127.0.0.1:8000/items
请求参数:
KEY
VALUE
user-agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
请求结果:{ "detail": [ { "loc": [ "header", "user_agent" ], "msg": "field required", "type": "value_error.missing" } ] }
从请求结果可以清晰看到,类型错误,导致这个抛出错误原因就是在headers 中设置了convert_underscores=False 。
注意点: 因为有些代理服务器不支持使用带有下划线的headers ,所以就会出现矛盾体,就是我既想禁用,又想正常访问的问题。对于这个问题,大家探讨吧…
因为与路径通信时会发送多个HTTP headers ,对于重复的headers 则需要使用一个list 来获得重复header 的所有值:from typing import Optional from fastapi import FastAPI, Header app = FastAPI() @app.get("/items/") def read_items(x_token: Optional[list[str]] = Header(...)): return {"x-token values": x_token}
启动服务:PS E:git_codepython-codefastapiProject> uvicorn header_main:app --reload
请求接口:
GET http://127.0.0.1:8000/items
请求参数:
KEY
VALUE
x-token
1234567
x-token
123456789
x-token
12345678910
请求结果:{ "x-token values": [ "1234567", "123456789", "12345678910" ] }
今天先聊到这里吧,以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的一键 3 连【 点赞、收藏、分享 】哟,谢谢!
未完成,待续……
一直在努力,希望你也是!
微信搜索公众号:就用python
Win10最好用的功能,只有1的人会正确使用进命令提示符或BIOS修改电脑软硬件设置时,进安全模式杀毒删文件卸载软件排查问题时系统文件损坏进不了系统,需要修复或重置时,更新后出现没声音键鼠不能用等异常,需要卸载更新时我们常提
环比增长26!OPPO进入全球出货量TOP5全靠这几招最近,权威调研机构Counterpoint公布第三季度的全球手机市场份额调研报告,在这份行业公信力榜单上,我们看到了不少熟悉的国产手机品牌,而作为国内一线大厂的OPPO,这次也位列
黑格增长助力你避开Facebook上的雷区,高效获客Facebook作为全球最成功的社交平台,有超过27亿月活跃用户,很多人或许对这个数字没有什么概念,那么如果我说微信的用户量为12亿,这样对比起来,可能大家就对Facebook客户
高端梦再次破碎,联发科的未来你怎么看?今年是5G快速发展的关键时期。手机市场的竞争最为明显。为了抢占市场份额,主要制造商疯狂地推广5G手机。当然,这个目标也已经实现。最重要的是,主要制造商希望进入高端市场并顺应当前趋势
饭店自动洗碗机的特点及注意事项中大型洗碗机适用于繁忙的大型食堂。与人工洗碗机和其他洗碗机不同,重复的工作可能会降低人工工作效率,而其他洗碗机可能无法清洁这么多餐具,从而降低清洗质量。大型洗碗机每小时可清洗960
案例解读2020外贸独立站运营效果如何?几乎全世界,包括中国人,在年初都没有想到,2020会以这样一种全球疯买中国货的方式收官。据数据显示,2020年11月,中国的出口增速21。1,贸易顺差754亿美元,创下了自1981
黑格增长拍了拍你,客户的联系方式还有三秒抵达你是否还在担心找不到途径获客?客户联系方式太单一?与客户沟通受到阻碍?客户流失加重?HaGro黑格增长助力多种渠道让你成功获客实现社交平台红利裂变式增长!自从疫情爆发以来,跨境贸易
教你SEMrush的正确打开方式,获取有价值的谷歌推广关键词之前有遇见这样的一个情况一个老板上来,就给新来的SEO专员布置了一个任务1个月之内把trademarkregistration这个词做到谷歌首页。你们认为这个SEO专员会怎么办?该
交换机的管理方式(一)Telnet管理一首先配置服务机(1)进入配置需要打的三条命令undoterminalmonitor关闭弹出信息systemview用户视图进入系统视图查看,调试sysname重命名(2)进入虚拟
Linux系统基本命令和快捷方式一如何连接shellIrootalocalhostIvimetcsysconfignetworkscriptsifcfgens33回车一下BOoTPROTOstatic网卡获取地址
不做谷歌SEO的外贸企业,正在错失这些出海优势外贸推广,会选择什么渠道?B2B平台,展会社媒广告还是独立站?独立站在近两年来迎来了一个高速爆发期,很多企业选择自立门户开展谷歌独立站营销。如果你认为的独立站只是一个展示作用,那么