• FastAPI 学习之路(二十五)路径操作装饰器依赖项


    有时,我们并不需要在路径操作函数中使用依赖项的返回值。或者说,有些依赖项不返回值。

    但仍要执行或解析该依赖项。

    对于这种情况,不必在声明路径操作函数的参数时使用 Depends,而是可以在路径操作装饰器中添加一个由 dependencies 组成的 list。

     我们看下,如何去实现。我们去校验下请求头中的token,请求的key。

    1. from fastapi import FastAPI, Depends, Header, HTTPException
    2. from typing import Optional
    3. app = FastAPI()
    4. fake_db_items = [{"city": "beijing"}, {"city": "shanghai"}, {"city": "guangzhou"}]
    5. def verify_token(token: str = Header(...)):
    6. if token != "mrli_token":
    7. raise HTTPException(status_code=400, detail="token is invalid")
    8. def verify_key(key: str = Header(...)):
    9. if key != "mrli_key":
    10. raise HTTPException(status_code=400, detail="key is invalid")
    11. return key
    12. @app.get("/items", dependencies=[Depends(verify_token), Depends(verify_key)])
    13. def read_items():
    14. return fake_db_items
    15. if __name__ == '__main__':
    16. import uvicorn
    17. uvicorn.run("main:app", reload=True, debug=True)

    我们看下结果如何。      

    ①:不传入请求头

    我们去看下带上请求头中的token

     我们去带下key,这样接口返回就是正确的。

    我们可以看到无论路径装饰器依赖项是否返回值,路径操作都不会使用这些值。但是这些值都必须携带。

  • 相关阅读:
    Linux系统下git相关使用
    Swift函数调用方式浅析
    spark 列判空
    对dubbo的DubboReference.check的参数进行剖析
    SystemFunction032函数的免杀研究
    Prometheus-Rules 实战
    【计算机网络】PPP和PPPoE协议
    怎么把pdf转换成高清图片?
    Unity笔记(5):Make Character Animation【2D】
    【Vue】水果购物车-基本渲染
  • 原文地址:https://blog.csdn.net/myli_binbin/article/details/126594352