小编woo*_*ody的帖子

如何扩展 Pydantic 对象并更改某些字段的类型?

有两个类似的 pydantic 对象。唯一的区别是有些字段是可选的。如何只定义一个对象中的字段并扩展到另一个对象中?

class ProjectCreateObject(BaseModel):
    project_id: str
    project_name: str
    project_type: ProjectTypeEnum
    depot: str
    system: str
    ...

class ProjectPatchObject(ProjectCreateObject):
    project_id: str
    project_name: Optional[str]
    project_type: Optional[ProjectTypeEnum]
    depot: Optional[str]
    system: Optional[str]
    ...

Run Code Online (Sandbox Code Playgroud)

python python-3.x pydantic fastapi

10
推荐指数
1
解决办法
2万
查看次数

如何在 fastapi 中定义具有多个 api 密钥的自定义安全性?

这是我的计划,但无法生成到 OpenAPI 文档的身份验证部分。

class HMACModel(BaseModel):
    api_key: APIKey = APIKey(**{"in": APIKeyIn.header}, name='Api-Key')
    signature: APIKey = APIKey(**{"in": APIKeyIn.header}, name='Signature')


class HMACAuth(APIKeyBase):
    model = HMACModel()
    scheme_name = 'HMACAuth'

    async def __call__(self, request: Request):
        api_key = request.headers.get('Api-Key')
        signature = request.headers.get('Signature')
        print(f's:{signature}, k:{api_key}')
        do_some_check()
        return api_key

@app.get('/')
async def test_api(req: ReqModel, api_key=Depends(HMACAuth())):
        pass
Run Code Online (Sandbox Code Playgroud)

当OpenAPI对象初始化并带有分析输出时,似乎自定义模型将被忽略OpenAPI(**output)。(输出中有安全模式,但OpenAPI对象中有missd)。

(参考代码:https://github.com/tiangolo/fastapi/blob/d60dd1b60e0acd0afcd5688e5759f450b6e7340c/fastapi/openapi/utils.py#L372)

fastapi

5
推荐指数
1
解决办法
3026
查看次数

标签 统计

fastapi ×2

pydantic ×1

python ×1

python-3.x ×1