0

我想为控制器get/post方法指定所需的 JSON,以便它在 SwaggerUI 中显示。

例如,我想request.json看起来像这样:

{
  'key1': <int>,
  'key2': <string>
}

我像这样初始化 SwaggerUI:

from sanic_openapi import swagger_blueprint, openapi_blueprint

app = Sanic(__name__)

# Set up SwaggerUI
app.blueprint(openapi_blueprint)
app.blueprint(swagger_blueprint)

如何使两个键都显示在 中parameters在此处输入图像描述

4

2 回答 2

1

sanic_openapi.doc.consumes装饰器用于装饰视图函数以记录它们的输入。装饰器函数的命名遵循OpenAPI 规范

这是应用它的一种方法:

@app.post('/recording_test')
@doc.summary('Tests a recording')
@doc.consumes({'key1': str, 'key2': int}, location='body')
async def create_recording_test(request):
    ...

您可以使用类对输入进行建模。

class RecordingTest:
    key1 = str
    key2 = int

按以下方式使用上面的建模输入

@app.post('/recording_test')
@doc.summary('Tests a recording')
@doc.consumes(RecordingTest, location='body')
async def create_recording_test(request):
    ...
于 2018-02-10T12:16:57.423 回答
0

您没有在 swagger 中看到此参数,因为您的 get 方法在课堂上。Sanic-openapi 和 Sanic-swagger 还不支持基于类的视图。:(

于 2019-01-30T18:45:02.313 回答