【发布时间】:2021-11-14 23:04:06
【问题描述】:
我想验证请求中的数据 我有字典(a 和 b 是用例,1234 是子用例)
d ={'a':[1,2],'b':[3,4]}
并请求 @router.post("/documents")
from typing import Literal, List, Optional, Dict
@router.post("/documents")
async def data(usecase: Literal[frozenset(d.keys())] = Form(...))
它有效并且只允许值 a 和 b
但我想扩展验证
@router.post("/documents")
async def data(usecase: Literal[frozenset(d.keys())] = Form(...),
subusecase: THERE I WANNA VALIDATE 1234 VALUES = Form(...)
)
非常感谢您的帮助
【问题讨论】:
-
class Usecase: a: Literal[1, 2, 3, 4], b: Literal[1, 2, 3, 4]?然后将其用作请求的类型?您还可以将 Literal 序列定义为变量,然后将其重新用于两个值;subusecases = Literal[1, 2, 3, 4], class Usecase: a: subusecases, b: subusecases -
感谢您关注我的问题。我想准确地使用 dict d。我的期望应该是这样的子用例: Dict[usecase]: str = Form(...)