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