Python 3.x 没有参数的依赖项做什么?

Python 3.x 没有参数的依赖项做什么?,python-3.x,fastapi,Python 3.x,Fastapi,我正在尝试用fastapi实现JWT。 目前正在查看以下库 在这两种情况下,我都在方法参数中看到dependens()。 当参数中没有任何内容时,依赖项会做什么 我不理解参数中有函数,但是你能教我当没有参数时它做什么吗 在这两种情况下,我都在方法参数中看到dependens()。当参数中没有任何内容时,依赖项会做什么 这是一个很好的问题 假设您有以下代码 从fastapi导入fastapi,具体取决于 从pydantic导入BaseModel 从键入导入可选 类位置(基本模型): 城市:s

我正在尝试用fastapi实现JWT。 目前正在查看以下库

在这两种情况下,我都在方法参数中看到dependens()。 当参数中没有任何内容时,依赖项会做什么

我不理解参数中有函数,但是你能教我当没有参数时它做什么吗

在这两种情况下,我都在方法参数中看到dependens()。当参数中没有任何内容时,依赖项会做什么

这是一个很好的问题

假设您有以下代码

从fastapi导入fastapi,具体取决于
从pydantic导入BaseModel
从键入导入可选
类位置(基本模型):
城市:str
国家:str
国家:str
app=FastAPI()
@app.post(“/without视情况而定”)
带_的异步定义取决于(位置:位置):
返回位置
@app.post(“/withdependens”)
带_depends的异步定义(位置:location=depends()):
回程润滑
我们在两个不同的端点使用相同的
位置
模型,一个使用
依赖
另一个不使用

有什么区别? 由于FastAPI基于OpenAPI规范,我们可以开始发现与自动生成的Swagger文档的区别

这是没有依赖项的,它需要一个请求主体。

这是带有Depends的,它期望它们作为查询参数。

这是如何有用的,它是如何工作的? 实际上,就是这样,它需要一个
可调用的

但是,当您将Pydantic模型
dependens
一起使用时,它实际上会在init
\uuuuu init\uuu
函数中为参数创建一个查询参数

例如,这就是我们上面使用的模型

类位置(基本模型):
城市:str
国家:str
国家:str
这取决于
的情况


类位置(基本模型):
定义初始化(self,城市:str,国家:str,州:str)->无:
...
然后它们将成为查询参数。这是
/WithDependes
端点的OpenAPI模式

“参数”:[
{
“必需”:正确,
“模式”:{
“头衔”:“城市”,
“类型”:“字符串”
},
“名称”:“城市”,
“在”:“查询”
},
{
“必需”:正确,
“模式”:{
“标题”:“国家”,
“类型”:“字符串”
},
“名称”:“国家”,
“在”:“查询”
},
{
“必需”:正确,
“模式”:{
“标题”:“国家”,
“类型”:“字符串”
},
“名称”:“国家”,
“在”:“查询”
}
]
这是它为
/without
端点创建的OpenAPI模式

“请求主体”:{
“内容”:{
“应用程序/json”:{
“模式”:{
“$ref”:“#/components/schemas/Location”
}
}
},
“必需”:true
}
结论 您可以使用相同的模型创建查询参数,而不是请求正文

Pydantic模型对于具有+5个参数的情况非常有用。但默认情况下,它需要一个请求主体。但不允许在GET操作中使用请求主体。正如规范中所述

GET、DELETE和HEAD不再允许有请求体,因为它没有按照RFC 7231定义的语义

因此,通过使用
dependens
可以使用相同的模型为GET端点创建查询参数

在这两种情况下,我都在方法参数中看到dependens()。当参数中没有任何内容时,依赖项会做什么

这是一个很好的问题

假设您有以下代码

从fastapi导入fastapi,具体取决于
从pydantic导入BaseModel
从键入导入可选
类位置(基本模型):
城市:str
国家:str
国家:str
app=FastAPI()
@app.post(“/without视情况而定”)
带_的异步定义取决于(位置:位置):
返回位置
@app.post(“/withdependens”)
带_depends的异步定义(位置:location=depends()):
回程润滑
我们在两个不同的端点使用相同的
位置
模型,一个使用
依赖
另一个不使用

有什么区别? 由于FastAPI基于OpenAPI规范,我们可以开始发现与自动生成的Swagger文档的区别

这是没有依赖项的,它需要一个请求主体。

这是带有Depends的,它期望它们作为查询参数。

这是如何有用的,它是如何工作的? 实际上,就是这样,它需要一个
可调用的

但是,当您将Pydantic模型
dependens
一起使用时,它实际上会在init
\uuuuu init\uuu
函数中为参数创建一个查询参数

例如,这就是我们上面使用的模型

类位置(基本模型):
城市:str
国家:str
国家:str
这取决于
的情况


类位置(基本模型):
定义初始化(self,城市:str,国家:str,州:str)->无:
...
然后它们将成为查询参数。这是
/WithDependes
端点的OpenAPI模式

“参数”:[
{
“必需”:正确,
“模式”:{
“头衔”:“城市”,
“类型”:“字符串”
},
“名称”:“城市”,
“在”:“查询”
},
{
“必需”:正确,
“模式”:{
“标题”:“国家”,
“类型”:“字符串”
},
“名称”:“国家”,
“在”:“查询”
},
{
“必需”:正确,
“模式”:{
“标题”:“国家”,
“类型”:“字符串”
},
“名称”:“国家”,
“在”:“查询”
}
]
这是它为
/创建的OpenAPI模式,没有
@router.post("/login")
    async def login(
        response: Response, credentials: OAuth2PasswordRequestForm = Depends()
    ):
@app.post('/login')
def login(user: User, Authorize: AuthJWT = Depends()):
commons: CommonQueryParams = Depends(CommonQueryParams)
commons: CommonQueryParams = Depends(CommonQueryParams)
commons: CommonQueryParams = Depends()