python基于flask实现swagger在线文档以及接口测试

这篇具有很好参考价值的文章主要介绍了python基于flask实现swagger在线文档以及接口测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

阅读对象:知道什么是restful,有了解swagger或者openAPI更佳。

1.什么是restful?

Representional State Transfer(REST):表征状态转移。是一种一种基于HTTP协议的架构。采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源。

如果REST满足一定条件(C/S、无状态、分层系统、统一接口),则称为REST ful。你可以理解成REST ful就是更加规范的REST。

简单总结就是我们通过http发起一个请求,这个请求可能是get请求,可能是post请求,然后从这个请求里面获取到我们所需要的资源。例如A系统对外暴露一个接口,该接口实现查询用户信息,B系统通过Http请求到A系统,然后通过这个http请求获取到了A系统的用户资源。

换句话说,就是我们需要实现restful,那么就得需要我们向外部暴露一个接口。
对于有Java开发经验的人来说,就很简单,那就是编写一个Controller
例如如下Controller接口表示对外暴露一个接口,那么通过浏览器访问这个地址,我们就能获取到这个任务信息(浏览器地址访问采用get请求方式)

<IP:端口/域名>/task/info/{taskId}
@RestController
@RequestMapping("/task")
public class TaskController {
	@GetMapping("/info/{taskId}")
	public R<TaskRes> getmTaskInfoById(@PathVariable String taskId) {
		TaskRes task = taskService.getTaskInfoById(taskId);
		return R.ok(task);
	}
}

2.swagger/openAPI能做什么?

在没有swagger之前,我们可以使用word,excel等功能来书写接口定义文档,但又有一个弊端。
即: 在接口改变时需要及时的同步接口文档,否则实际的接口与接口文档不相符,则接口文件就失去了作用,甚至会起到反作用。

比如上述接口一开始采用的是get请求,并且taskId是通过地址传参,假设现在维护代码的人将请求改成post,然后taskId放到请求body中,例如变成post+json的方式,但是很可能忘记维护接口文档,导致接口文档和实际接口不一致。

在Java中,我们可以根据在代码中使用自定义的注解来生成接口文档,这个在前后端分离的项目中很重要。这样做的好处是 在开发接口时可以通过swagger 将接口文档定义好,同时也方便以后的维护。

例如在Java中,我们可以通过如下注解:@API、@ApiModelProperty等注解来修饰我们代码。
在python中,类似的功能叫做装饰器
python swagger,python,python,flask,restful
此时访问swagger,我们即可看到如下在线的一个文档,这个文档能将我们Java代码里面的注解描述信息是保持一致的。

python swagger,python,python,flask,restful
python swagger,python,python,flask,restful

当然,Java毕竟生态很成熟,上述的原生swagger不太符合我们目前的使用习惯,因此使用如下的显示插件
OpenAPI3 (swagger3) 访问地址:http://127.0.0.1:9090/swagger-ui/index.html
knife4j UI 访问地址:http://127.0.0.1:9090/doc.html
python swagger,python,python,flask,restful
我们可以点击调试,即可在线测试这个接口的功能,等价于把postman这种接口测试工具集成进来了。
python swagger,python,python,flask,restful

3.python如何实现swagger?

在flask框架中使用的swagger即为flasgger,flasgger是flask支持的swagger UI,便于调试使用flask框架搭建的web api接口

flasgger安装

pip install flasgger

flasgger github开源地址

https://github.com/flasgger/flasgger

flasgger gitee开源地址

https://gitee.com/Flasgger/flasgger

4.flasgger的使用案例

比如我们现在需要对外提供一个接口,这个接口的请求参数如下,参数格式是一个复杂的JSON格式,包含了字符串(userName),对象(userInfo),数字(age),数组(hobby),基本上这个请求参数覆盖我们百分之99的参数需求了
python swagger,python,python,flask,restful
访问地址

http://127.0.0.1:8085/apidocs/

当我们集成完毕后,打开如上地址,就能打开python版本的swagger的页面
python swagger,python,python,flask,restful
可以查看Models,这个models是描述各个参数,点击这个方法,就可以看到调用的示例,可以点击界面的try it out,就可以进行请求调试了
python swagger,python,python,flask,restful
进入调试页面,修改参数后,点击执行(Execute)按钮。
python swagger,python,python,flask,restful
如下就是此次我们调用接口返回的信息了。
python swagger,python,python,flask,restful

对比之前的Java版本,我们发现,画面基本保持一致。当然了由于Java生态好,所以还有bootstrapUI或者knife4j UI(换一种UI的风格展示swagger)的支持,暂时在python中没找到bootstrap和knife4j对python版本的swagger的支持。

如果您有python版本的bootstrapUI或者knife4j UI,或者有类似的UI,还请联系我,大家一起学习,学习。
python swagger,python,python,flask,restful

5.完整代码

python swagger,python,python,flask,restful

app.py

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

server = Flask(__name__)
Swagger(server)
server.config['JSON_AS_ASCII']=False

@server.route('/flask/flasgger/demo',methods=['POST'])
@swag_from('demo.yml')
def demo_request():
    json_data = request.json
    result = {"code":"200","msg":"SUCCES","data":{"name":"xxxxxx","age":25,"job":"python"}}
    return jsonify(result)

if __name__ == "__main__":
    server.run(port=8085,debug=True)

demo.yml

tags:
  - falsk集成swagger示例
description:
    示例flasgger进行在线文档生成,添加用户信息,请求参数覆盖了常用的字符串、对象、数组、数字
parameters:
  - name: body
    in: body
    required: true
    schema:
      id: 接口参数示例
      properties:
        userName:
          type: string
          description: 用户自己的姓名
        userInfo:
            properties:
              hobby:
                type: array
                items:
                  type: string
                description: 用户的爱好
              age:
                type: integer
                description: 用户年龄
responses:
  200:
     description: 添加用户成功
     example:
  500:
     description: 添加用户失败
     example:

至此完毕,基本上本案例足以应付大部分使用需求。当前根据个人习惯不同,也可以采用不同的实现方式。具体细节见开源使用说明
flasgger github开源地址

https://github.com/flasgger/flasgger

flasgger gitee开源地址

https://gitee.com/Flasgger/flasgger

python swagger,python,python,flask,restful文章来源地址https://www.toymoban.com/news/detail-660132.html

到了这里,关于python基于flask实现swagger在线文档以及接口测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • swagger-bootstrap-ui 报错No mapping for GET /doc.htm,404l,以及无法显示接口文档

    首先是访问http://ip:/doc.htmlhttp://${host}:${port}/doc.htmlhttp://ip:/doc.html报错 1、假如是SpringSecurity项目,可能是configure(WebSecurity web)没有放行,代码如下 在启动类中修改成如下代码 Swagger配置类 Controller类  Swagger依赖

    2024年02月13日
    浏览(28)
  • 用Python基础知识实现了一个在线的markdown编辑工具、基于Editor.md、Flask、Flask_SQLAlchemy、sm.ms

    我打算把我的域名用于图床了,网站后面可能访问就不太行了 【系统已经升级啦,快看这里 】 所谓天下代码一大抄,抄来抄去有提高,用来描述编程再合适不过了,今天我也抄了一波。我通过开源+借鉴的方式,自己搞了一个在线的 markdown 编辑器,没错这篇文章就是在上面

    2024年02月01日
    浏览(41)
  • Spring Cloud Gateway集成Swagger实现微服务接口文档统一管理及登录访问

    本文将介绍如何在 Spring Cloud 微服务中使用 Swagger 网关来统一管理所有微服务的接口文档,并通过 Spring Security 实现登录后才能访问 Swagger 文档,以确保接口数据的安全访问。 在开始之前,需要假设你已经完成了 Spring Cloud Gateway 的相关配置,并且已经了解了基本的网关配置知

    2024年02月05日
    浏览(33)
  • Python自动化测试——在线生成接口文档

    目录 前言 API 文档导入生成 在项目详情页点击左侧 API 功能,进入 API 管理页面,直接点击下拉框选择导入 API  自动生成文档 通过使用接口文档工具 Eolink 演示如何自动生成文档 使用 API Factory 产品根据数据库生成 API 文档 结语 接口文档是项目开发中必需的说明文档,接口文

    2024年02月07日
    浏览(43)
  • Java技术-接口文档-Swagger2&Swagger3&接口文档UI整合

    目录 一、Swagger2完整用法 1.POM依赖 2.接口类 3.实现类 4.托管静态资源 5.接口文档配置 6.生产环境关闭接口文档 7.Swagger3页面效果 二、Swagger3完整用法 三、Swagger整合Knife4jUi 1.POM依赖 2.接口类 3.实现类 4.托管静态资源 5.接口文档配置 6.生产环境关闭接口文档 四、注释和参数讲解

    2024年02月16日
    浏览(35)
  • 怎样找到swagger接口文档

    如果你的 API 在运行中,你可以在浏览器中访问 http://[your-api-domain]/swagger 来查看 Swagger 接口文档。 例如,如果你的 API 的域名是 api.example.com ,你可以在浏览器中访问 http://api.example.com/swagger 来查看 Swagger 接口文档。 如果你的 API 是本地运行的,你可以在浏览器中访问 http://

    2024年02月16日
    浏览(26)
  • Swagger接口文档的导出使用

    1.配置项目swagger2 帮助网站:https://blog.csdn.net/xhmico/article/details/125353535 配置完成后,运行项目,打开 http://localhost:8868/mike/swagger-ui.html# (注意端口) ,如下: 点击红圈链接,会生成 json 格式的接口文档,如下图: 2.生成文档 点击下方链接: 在线swagger转word文档|swagger导出w

    2024年02月09日
    浏览(30)
  • swagger接口文档导入postman

    第一步:打开接口文档并且打开控制台: 第二步:点击Network,找到api-docs的文件  第三步:将JSON格式的数据保存到本地  第四步:打开Postman,并且点击右上角的Import  第五步:将刚才的JSON格式数据粘贴复制到Raw Text  第六步:点击Continue,执行POSTman的默认选项,并且点击

    2024年02月13日
    浏览(35)
  • 手把手教你使用Flask框架构建Python接口以及如何请求该接口

    Flask是一个轻量级的Web应用框架,基于Python编写,其核心思想是保持简洁,灵活性和易于扩展。 Flask是一个轻量级的Web应用框架,基于Python编写,其核心思想是保持简洁,灵活性和易于扩展。Flask提供了基本的Web开发工具和应用程序的结构,但同时也允许开发者自由选择其他库

    2024年02月06日
    浏览(95)
  • gin中使用swagger生成接口文档

    想要使用 gin-swagger 为你的代码自动生成接口文档,一般需要下面三个步骤: 按照swagger要求给接口代码添加声明式注释,具体参照声明式注释格式。 使用swag工具扫描代码自动生成API接口文档数据 使用gin-swagger渲染在线接口文档页面 第一步:添加注释 在程序入口main函数上以

    2024年01月25日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包