我正在尝试在Swagger UI页面中显示基于功能的视图。该视图是旧版代码的一部分(真实代码,而不是下面显示的代码),并且支持GET
和POST
操作。
@schema(foo_schema)
def foo(request):
if request.method == 'GET':
param1 = request.query_params.get('param1')
# do something
elif request.method == 'POST':
param1 = request.data.get('param1')
# do something
...
param1
和GET
操作都需要参数POST
,所以我最初的尝试是在模式中用两次不同的位置参数指定两次:
foo_schema = AutoSchema(
manual_fields=[
coreapi.Field(
name='param1',
location='query',
required=True,
schema=coreschema.Integer(),
),
coreapi.Field(
name='param1',
location='formData',
required=True,
schema=coreschema.Integer(),
),
...
]
)
问题是,摇摇欲坠的UI只能将字段作为表单数据显示一次。因此,即使我尝试使用GET
请求通过招摇访问端点,该参数也将包含在request.data
变量中,而不包含在request.query_params
中,就像输入的数据始终是一部分一样POST
请求中。同样,如果我删除了架构中的第二个字段规范,则该参数将始终位于request.query_parames
中,就像请求始终为GET
一样。
如何在招摇中同时指定两个字段?或者更好的是,我如何只显示一个字段,但要确保将GET
参数转到request.query_params
,并且将POST
参数转到request.data
?