python 如何使用swagger

swagger介绍swagger是一个api文档工具,集api管理,测试,访问于一体的网页版api文档工具了解更多,请访问相关网站swagger官网swaggergithubOpenApi参数说明python相关包connexionflasggerflask-swag,flask-swaggerFlask-RESTPluspythonswagger-cod…

大家好,又见面了,我是你们的朋友全栈君。

swagger 介绍

  1. swagger 是一个api文档工具,集api管理,测试,访问于一体的网页版api文档工具
  2. 了解更多,请访问相关网站
  3. swagger 官网
  4. swagger github
  5. OpenApi 参数说明

python 相关包

  1. connexion
  2. flasgger
  3. flask-swag,flask-swagger
  4. Flask-RESTPlus
  5. python swagger-codegen java 版,可生成简易版的python项目,搭配swagger-client即可使用

使用 flasgger

  • 该工具与python web 服务框架 flask 高度集成
  • 自带前端页面,无需安装其他

使用示例


注意: flasgger 中引用一个外部文件,在内网中不可访问,导致页面一直在刷新,

  1. 在源码中,找到 ui3/templates/head.html
  2. 找到 <link href="https://fonts.proxy.ustclug.org/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">这行
  3. 注释掉,重启服务后就可正常运行了

# 简易示例
import random
from flask import Flask, jsonify, request
from flasgger import Swagger

app = Flask(__name__)
Swagger(app)

@app.route('/api/<string:language>/', methods=['GET'])
def index(language):
    """
    This is the language awesomeness API
    Call this api passing a language name and get back its features
    ---
    tags:
      - Awesomeness Language API
    parameters:
      - name: language
        in: path
        type: string
        required: true
        description: The language name
      - name: size
        in: query
        type: integer
        description: size of awesomeness
    responses:
      500:
        description: Error The language is not awesome!
      200:
        description: A language with its awesomeness
        schema:
          id: awesome
          properties:
            language:
              type: string
              description: The language name
              default: Lua
            features:
              type: array
              description: The awesomeness list
              items:
                type: string
              default: ["perfect", "simple", "lovely"]

    """
    language = language.lower().strip()
    features = [
        "awesome", "great", "dynamic", 
        "simple", "powerful", "amazing", 
        "perfect", "beauty", "lovely"
    ]
    size = int(request.args.get('size', 1))
    if language in ['php', 'vb', 'visualbasic', 'actionscript']:
        return "An error occurred, invalid language for awesomeness", 500
    return jsonify(
        language=language,
        features=random.sample(features, size)
    )


app.run(debug=True)
  1. 打开浏览器,访问 http://127.0.0.1:5000/apidocs/
    src=https://s2.ax1x.com/2019/10/09/u4t0Jg.md.jpg
    u4t0Jg.jpg

使用配置文件方式

#! /usr/bin/python3
# -*- coding:utf-8  -*-

import random
from flask import Flask, jsonify, request
from flasgger import Swagger, swag_from

app = Flask(__name__)
Swagger(app)

@app.route('/api/<string:language>/', methods=['GET'])
@swag_from("api_get.yml")
def index(language):
    language = language.lower().strip()
    features = [
        "awesome", "great", "dynamic",
        "simple", "powerful", "amazing",
        "perfect", "beauty", "lovely"
    ]
    size = int(request.args.get('size', 1))
    if language in ['php', 'vb', 'visualbasic', 'actionscript']:
        return "An error occurred, invalid language for awesomeness", 500
    return jsonify(
        language=language,
        features=random.sample(features, size)
    )

app.run(debug=True)
  1. 将注释放入 api_get 中,再使用装饰器 swag_from 即可达成一样的效果
  2. 项目地址 https://github.com/Laurel-rao/csdn_demo/tree/master/flasgger_use

swagger 配置文件介绍

swagger,包括两大部分,一部分是全局配置,一部分是具体url的配置

  • 配置介绍,请看官网 https://swagger.io/docs/specification/basic-structure/
  • OpenAPI 介绍:
    • openAPI 是用来描述api信息的一种规范,支持 yaml 和 json 格式
    • openAPI 详情https://github.com/OAI/OpenAPI-Specification/tree/OpenAPI.next

swagger 全局配置

python 配置全局配置

  1. 全局配置,包括页面的描述,标题,服务器地址等等
swagger_config = {
    "headers": [
        ],
        "specs": [
            {
                "endpoint": 'apispec_2',
                "route": '/apispecification.json',
                "rule_filter": lambda rule: True,  # all in
                "model_filter": lambda tag: True,  # all in
            }
        ],
    "static_url_path": "/flasgger_static",
    # "static_folder": "static",  # must be set by user
    "swagger_ui": True,
    "specs_route": "/doc/"
}
template_config = {
  "info": {
    "title": "Sample API",
    "description": "Hahaha, this is a API kingdom!",
    "version": "1.0.0"
  }
}
Swagger(app, template=template_config, config=swagger_config)
  1. 详细请看 info 项配置详情
  • 项目代码请访问 github

具体使用

parameter 详解

  1. 使用 in : body,可以将参数放入请求体,适用于POST 请求
  2. swagger 中要传入一个 字典参数怎么办

未完待续,目前发现swagger 还有很多不方便的地方,暂时停更

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128777.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea在线激活码【在线注册码/序列号/破解码】

    idea在线激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    58
  • linux重启下mysql数据库命令_linux重启mysql数据库命令

    linux重启下mysql数据库命令_linux重启mysql数据库命令Linux 中难免会对数据库进行操作 下面由学习啦小编为大家整理了 linux 重启 mysql 数据库命令的相关知识 希望对大家有帮助 linux 重启 mysql 数据库命令 1 使用 service 启动 servicemysql 5 5 7 版本命令 linux 重启 mysql 数据库命令 2 使用 mysqld 脚本启动 etc init d mysq

    2025年9月13日
    4
  • 简单常用滤波算法C语言实现「建议收藏」

    简单常用滤波算法C语言实现「建议收藏」1.限幅滤波算法(程序判断滤波算法)方法解析:根据经验判断,确定两次采样允许的最大偏差值(设定为A),每次检测到新值时判断:如果本次值与上次值之差如果本次值与上次值只差>A,则本次值无效,放弃本次值,用上次值代替本次值。优点:能有效克服因偶然因素引起的脉冲干扰缺点:无法抑制那种周期性的干扰,平滑度差#defineA10charvalue;charfi

    2022年5月28日
    49
  • java集合系列——Map之HashMap介绍(八)

    HashMap是基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。

    2022年2月26日
    63
  • 第十七届全国大学智能汽车竞赛竞速比赛规则

    第十七届全国大学智能汽车竞赛竞速比赛规则 §00规则导读参加过往届比赛的队员可以通过下面内容了解第十七届竞赛规则主要变化。如果第一次参加比赛,建议对于本文进行全文阅读。 §01前言

    2022年5月30日
    78
  • Xshell连接不上虚拟机Linux系统

    Xshell连接不上虚拟机Linux系统以下是我在尝试网上各种办法之后总结的最优解决办法 1 先在主机上检查虚拟机相关的必要的服务是否都已经启动 2 检查虚拟机系统防火墙是否处于关闭状态 3 检查虚拟机系统的 ssh 服务是否已经启动 4 检查 ifcfg eth0 文件是否配置正确文件路径 etc sysconfig network scripts ifcfg eth0 本人虚拟机配置截图 网段查看 VmwareWo

    2025年8月26日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号