将 Swagger 与 Flask 一起使用 [关闭]

Posted

技术标签:

【中文标题】将 Swagger 与 Flask 一起使用 [关闭]【英文标题】:Using Swagger with Flask [closed] 【发布时间】:2014-01-26 11:17:37 【问题描述】:

有没有办法使用Swagger 在Flask 中生成 RESTful API?

【问题讨论】:

如果 API 已经存在,则有 this 或 this 生成一个。尽管如此,这在很大程度上是一个“向我建议图书馆”的问题,这更适合Stack Overflow Chat 【参考方案1】:

对于 Swagger 3.0:

使用fastapi。

【讨论】:

这可能不是一个正确的答案(技术上它使用 Starlette 而不是 Flask),但它是迄今为止最好的恕我直言。我尝试了所有其他选项,但对它们未能利用现代 Python 感到沮丧。相比之下,FastAPI 的序列化、类型化和路由都得到了很好的实现,并且正在积极改进。 Starlette 与 Flask 非常相似,因此几乎没有任何学习曲线。【参考方案2】:

现在还有flask-apispec。它使用 marshmallow 来编写最终出现在 swagger 输出中的模式/注释。

【讨论】:

【参考方案3】:

Flasgger 是为 Flask 路由制作自动 UI 的扩展 http://github.com/rochacbruno/flasgger

【讨论】:

【参考方案4】:

Swagger 编辑器现在支持 Flask:http://editor.swagger.io/#/

【讨论】:

【参考方案5】:

到目前为止,基于 Flask-Restful 的 Flask-RESTPlus。 它提供了一些装饰器来记录您的 API 并生成 Swagger 规范、Postman 集合......

下一个版本将能够根据 Swagger 规范生成 API。

【讨论】:

这是一个不错的选择,它的工作方式和restify一样,但包含swagger,它包含swagger UI。 我只希望 Flask-RESTPlus 0.12 中的 @api.doc(...) 和其他 Swagger 文档装饰器被记录得更好。我花了很多时间在黑暗中拍摄以获得我想要的文档。 有一个完整的文档页面仅供文档装饰器使用:flask-restplus.readthedocs.io/en/stable/swagger.html 如果有不清楚或缺少的地方,请提交 pull-requests(或询问) 问题是,对于那些不清楚或缺失的部分进行 PR,您需要知道解决方案是什么。我花了很长时间尝试将字段设置为密码类型输入。诸如此类的随意。哦,并试图让一个 API 分布在多个文件中。不要误会我的意思,这是我解决这个问题的首选答案,但有时比实现目标更难 重要要注意 Flask-RESTPlus 项目应被视为未维护并被分叉到另一个项目。【参考方案6】:

你也可以使用connexion

“Connexion 是一个基于 Flask 的框架,用于根据 YAML 中的 Swagger 2.0 规范文件自动处理您的 REST API 请求。”

【讨论】:

Connexion 基于 OpenAPI 2.0 规范。这令人失望,因为 OpenAPI 已经升级到 3.0! Connexion 2 最近发布 - 它声称实现了 OpenAPI 3.0。如果connexion.App() 是用options='uri_parsing_class': OpenAPIURIParser 参数定义的,我发现它更符合规范【参考方案7】:

如果你不使用flask-restful 扩展,你可以看看flask-sillywalk

【讨论】:

【参考方案8】:

您可以使用flask-restful-swagger。

【讨论】:

以上是关于将 Swagger 与 Flask 一起使用 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Flask API 文档管理与 Swagger 上手

将生成的 Flask 应用程序代码(Swagger-Codegen)粘合到后端实现的最简洁方法

如何将 Apollo-Gateway 与 swagger-to-graphql 工具一起使用?

将@ApiQuery 与nestJS 和swagger 一起使用时,有没有办法声明默认值?

将 Ocelot 16.0 与 ASP.Net Core 3.1 集成不起作用,因为我需要将 Swagger 与 Ocelot 一起使用

将 Swagger 与 Django Rest Framework 一起使用,我可以在不同字段而不是一个正文中看到 POST 参数吗