【发布时间】:2021-12-03 12:21:27
【问题描述】:
我想在 fastapi 中将 Request 对象定义为可选变量类型,但出现错误
fastapi.exceptions.FastAPIError: Invalid args for response field! Hint: check that typing.Optional[starlette.requests.Request] is a valid pydantic field type
代码如下:
from fastapi import APIRouter, Request
from typing import Optional, Union
import starlette
router = APIRouter(
tags=['pcinfo'],
prefix='/api/v1',
responses={404: {'message': 'Not found'}}
)
@router.get('/pcinfo/', tags=['pcinfo'])
def get_users(req: Optional[Request] = None):
if req:
print(type(req))
print(req.query_params)
para = dict(req.query_params)
return para
else:
print(req)
return {'message': 'hello'}
然后我导入starlette并将Optional[Request]更改为Optional[starlette.requests.Request],但仍然显示相同的错误消息。
【问题讨论】:
-
可选的
request字段是什么意思?将请求视为首先需要调用路由器;你想达到什么目标?
标签: python fastapi python-typing typing pydantic