flask 生成swagger文档

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
简介: flask 生成swagger文档

flask 自动生成swagger 的api接口文档

  1. 安装flask-restplus 第三方包,使用pip install flask-restplus 安装即可。
  2. 在一个普通的正常的flask 应用项目结构下,应该是在extensions.py 下进行代码书写,因为这是进行程序扩展的代码编写处。导包,导入flask_restplus 下的Api,Resource,fields。获取一个app 实例。并进行namespace 的书写。代码如下:

     api = Api(doc='/swagger')
     api.init_app(app, version='1.0', title='Data Visualization And Analysis API',
                  description='A Charting and Data analysis API')
     bar_line = api.namespace('drawing bar and line', path='/', description="draw bar and line chart")
     pie = api.namespace('drawing pie', path='/', description="draw pie chart")
     radar = api.namespace('drawing radar', path='/', description="draw radar chart")
     scatter = api.namespace('drawing scatter', path='/', description="draw scatter chart")
     data_analysis = api.namespace('data analysis', path='/', description="data analysis")
    

    获取一个实例化Api对象,app是一个实例化的flask对象,通过在实例化Api对象时通过doc 参数可以指定最终的接口文档通过什么路由可以访问到。api.namespace :是命名空间,很多接口都有get,post,命名空间把他们分隔开,可理解为蓝图。
    path:代表他们的路由地址,这里让他们都使用route的地址,不写的话会把命名空间的name加到路由地址的最前面
    description:是对该组下所有接口的总的一个注释。

  3. 通过api.model 来描述请求的request 和 响应的response,通过api.namespace.parser 来描述请求的headers 参数。

代码示例如下:

    # 使用parser 来描述接口的headers 和 query
    bar_line_parameter = bar_line.parser()
    bar_line_parameter.add_argument('Authorization', location='headers', default="a")
    bar_line_parameter.add_argument('User-Agent', location='headers', default="ua")
    # 使用model 来描述接口的请求体
    bar_line_model = api.model('Bar_Line_Request', {
   
        "type": fields.String(default="bar"),
        "title": DictItem(required=True, default={
   }, description="chart title option"),
        "item": DictItem(required=True, default={
   }, description="chart series item option"),
        "xaxis": DictItem(required=True, default={
   }, description="chart xaxis option"),
        "yaxis": DictItem(required=True, default={
   }, description="chart yaxis option"),
        "grid": DictItem(required=True, default={
   }, description="chart grid option"),
        "legend": DictItem(required=True, default={
   }, description="chart legend option"),
        "tooltip": DictItem(required=True, default={
   }, description="chart tooltip option"),
        "background": DictItem(required=True, default={
   }, description="chart tooltip option"),
    }, description="request api needed body parameter")
    # 使用model 来描述接口的响应
    bar_line_response = api.model('bar_line_Response', {
   
        'data': DictItem(required=True, default=bar_line_response_data_default, description="chart option"),
        'status': fields.Integer(required=True, default=200, description="response status"),
        'msg': fields.String(required=True, default="successful", description="api response message")
    })

如上,其中bar_line 是api.namespace() 的返回对象,使用parser 的add_argument() 方法来添加headers ,或query 中请求所需参数,同时可以定义默认值。
使用model 来描述请求的请求体,响应也是。model 需要指定一个唯一的key 值,和一个 {} 字典键值对,在该字典键值对中key值是所需传输的name,value 是通过flask-restplus 下的fields 来指定数据类型以及默认值描述 的值。
如果fields中提供的数据类型满足不了使用,可以通过自定义类继承fields.Row ,并且实现format 方法,来使用自定义的数据类型。代码中的DictItem 就是自定义数据类型。

  1. 将以上定义的model,parser 应用到接口上。通过装饰器的方式,代码如下。
    # 使用api.namespace.route 来指定接口的访问路由,使用description来描述接口
    @bar_line.route('/api/chart/draw/bar_and_line',
                    doc={
   "description": "返回图表的echarts 配置项信息,当请求参数配置为空时返回默认配置的图表即示例样例,否则根据请求的配置参数返回对应的完整的图表配置信息"})
    # 这里的api.namespace.expect 需要与上面的api.namespace.expect 联用
    @bar_line.expect(bar_line_parameter)
    # 需要继承于Resource类
    class BarLineOption(Resource):
        # doc 用于描述接口,body=X 指定请求的body描述
        @bar_line.doc('Return to bar and line chart configuration item')
        @bar_line.doc(body=bar_line_model)
        # marshal_with 指定响应的描述
        @bar_line.marshal_with(bar_line_response)
        # 接口支持什么方法,就定义一个什么方法。
        def post(self):
            return {
   'data': {
   },
                    "status": 200, "msg": "successful"}
目录
相关文章
|
7月前
|
Oracle 关系型数据库 Java
程序员必备推荐一款与Swagger媲美的数据库文档生成工具
程序员必备推荐一款与Swagger媲美的数据库文档生成工具
80 0
|
7月前
|
数据可视化 Linux API
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档
|
7月前
|
数据可视化 API 开发者
通俗易懂:一步步教你 Flask 项目自动生成 API 文档
Flasgger,作为一款强大的 Flask 扩展,自动从 Flask 应用中提取并生成 OpenAPI 规范文档,配备 SwaggerUI,为开发者提供了一条快捷通道,让 API 的文档编制和交互式测试变得简单易行。Flasgger 的设计原则是简化开发流程,通过与 Flask 框架的无缝整合,让开发者可以更专注于应用逻辑的构建。
|
7月前
|
数据可视化 Linux API
使用Docker安装部署Swagger Editor并远程访问编辑API文档
使用Docker安装部署Swagger Editor并远程访问编辑API文档
137 0
|
5月前
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
2月前
|
安全 Java API
SpringSecurity结合knife4j实现swagger文档
通过将Spring Security与Knife4j相结合,我们不仅能够为RESTful API提供强大的安全防护,还能保证API文档的易用性和可访问性,这对于API的设计、开发和维护来说至关重要。这种集成方式不仅提升了开发效率,也优化了API使用者的体验,是现代API驱动开发中不可或缺的一环。
110 0
|
4月前
|
JSON 测试技术 API
Python开发解析Swagger文档小工具
文章介绍了如何使用Python开发一个解析Swagger文档的小工具,该工具可以生成符合httprunner测试框架的json/yaml测试用例,同时还能输出Excel文件,以方便测试人员根据不同需求使用。文章提供了详细的开发步骤、环境配置和使用示例,并鼓励读者为该开源项目贡献代码和建议。
104 1
Python开发解析Swagger文档小工具
|
5月前
|
安全 Java API
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档
这篇文章介绍了Swagger,它是一组开源工具,围绕OpenAPI规范帮助设计、构建、记录和使用RESTAPI。文章主要讨论了Swagger的主要工具,包括SwaggerEditor、SwaggerUI、SwaggerCodegen等。然后介绍了如何在Nest框架中集成Swagger,展示了安装依赖、定义DTO和控制器等步骤,以及如何使用Swagger装饰器。文章最后总结说,集成Swagger文档可以自动生成和维护API文档,规范API标准化和一致性,但会增加开发者工作量,需要保持注释和装饰器的准确性。
147 0
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档
|
7月前
|
Dubbo Java 测试技术
提升API文档品质:Swagger annotations (注解)使用教程
Swagger 提供的注解集是其框架中定义 API 规范和文档的重要工具。这些注解在代码里标注重要部分,为 Swagger 的解析工作铺路,进而生成详尽的 API 文档。开发者编写的注释能够被转换成直观的文档,并展现API端点、参数和响应等信息。这不仅提升了开发人员对 API 运作的理解与沟通,也使得测试和集成过程更加顺畅。
|
6月前
|
Java API Spring
Spring Boot中配置Swagger用于API文档
Spring Boot中配置Swagger用于API文档
下一篇
DataWorks