fastapi - 解决通过Header获取token和OpenApi不兼容的问题

在FastAPI通过标注Header类型获取Authorization时, 会导致openapi页面的请求没法使用

from typing import Annotated from fastapi import FastAPI, Header, Request, Depends, Cookie, Query, APIRouter from fastapi.routing import APIRoute from fastapi.security.api_key import APIKeyCookie, APIKeyHeader, APIKeyQuery from fastapi.openapi.models import SecuritySchemeType app = FastAPI() @app.get("/get_key") def get_api_key( request: Request, authorization: Annotated[str, Header()], ): print(authorization) print(request.headers) return "OK"

这是因为openapi发请求时会过滤掉token的字段, 导致fastapi报错

img

为了解决这个问题fastapi把认证相关的逻辑放到了fastapi.security.api_key模块,通过Depends的方式来解决的.

from typing import Annotated from fastapi import FastAPI, Header, Request, Depends, Cookie, Query, APIRouter from fastapi.routing import APIRoute from fastapi.security.api_key import APIKeyCookie, APIKeyHeader, APIKeyQuery from fastapi.openapi.models import SecuritySchemeType app = FastAPI() @app.get("/get_key") def get_api_key( request: Request, authorization: Annotated[str, Depends(APIKeyHeader(name="authorization"))], ): print(authorization) print(request.headers) return "OK"

img

img

这样就解决了!


__EOF__

本文作者侯佳奇的博客
本文链接https://www.cnblogs.com/houjiaqi/p/18186383.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   侯佳奇  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示