当我的函数中有多个http方法(GET,POST)时,如何使用flasgger编写API文档?

时间:2017-08-02 07:10:41

标签: python api flask swagger flasgger

我正在使用flasgger编写我的API文档,我的一个函数有GET和POST方法。问题是,flasgger无法区分GET和POST方法。我只为post方法编写了代码,但它也将该代码与GET方法相关联

我附上了显示我编写的代码的图像,因为你可以看到我在这里编写的代码仅用于POST方法,但是它也与GET方法相关联,如第2张图所示。

enter image description here

此图显示了GET和POST方法的swagger UI。您可以看到,对于GET方法,它显示的结果与POST方法的结果相同,即使我没有为GET方法编写任何内容。

enter image description here

我想使用docstring方法将swagger集成到我的代码中该怎么办?

1 个答案:

答案 0 :(得分:0)

Flasgger实际上能够区分在不同http方法上运行的单个函数的文档。但是,它无法从单个docstring创建两个单独的文档。这里描述了flasgger文档提供的解决方案:

https://github.com/rochacbruno/flasgger#handling-multiple-http-methods-and-routes-for-a-single-function

@app.route('/api/<string:username>', endpoint='with_user_name', methods=['PUT', 'GET'])
@app.route('/api/', endpoint='without_user_name')
@swag_from('path/to/external_file.yml', endpoint='with_user_name')
@swag_from('path/to/external_file_no_user_get.yml', endpoint='without_user_name', methods=['GET'])
@swag_from('path/to/external_file_no_user_put.yml', endpoint='without_user_name', methods=['PUT'])

...但它需要将文档保存在单独的文件中。