python--Flasgger使用心得

2024-02-16 12:48
文章标签 python 使用 心得 flasgger

本文主要是介绍python--Flasgger使用心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:https://changsiyuan.github.io/2017/05/20/2017-5-20-flasgger/

引言

  • Flask是一款流行的Python实现的Web开发微框架;
  • Swagger是一款Restful接口的文档在线自动生成+功能测试功能软件;
  • 通过swagger能够清晰、便捷地调试符合Restful规范的API;
  • 在flask框架中使用的swagger即为flasgger,flasgger是flask支持的swagger UI,便于调试使用flask框架搭建的web api接口;

本文介绍了flasgger的用法和不足之处。

使用方法

首先,需要在项目中安装flasgger,具体方法有两种:

  • 方法一:在visual studio中右键工程,搜索flasgger,自动安装;
  • 方法二:使用pip命令,pip install flasgger;

安装后,使用下面的程序框架,搭建最简单的web api:

app = Flask(__name__)
Swagger(app)@app.route('/api/<string:language>/', methods=['GET'])
def index(language):"""This is the language awesomeness APICall this api passing a language name and get back its features---tags:- Awesomeness Language APIparameters:- name: languagein: pathtype: stringrequired: truedescription: The language name- name: sizein: querytype: integerdescription: size of awesomenessresponses:500:description: Error The language is not awesome!200:description: A language with its awesomenessschema:id: awesomeproperties:language:type: stringdescription: The language namedefault: Luafeatures:type: arraydescription: The awesomeness listitems:type: stringdefault: ["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", 500return jsonify(language=language,features=random.sample(features, size))app.run(debug=True)

从上面的程序我们可以看出,只要将yaml格式的flasgger描述性程序放置在两组双引号之间的位置,即可实现flasgger的基本功能;

访问http://localhost:5000/apidocs/index.html 即可看到flasgger页面

当然,上面的yaml描述性程序可以放置在单独的文件中,那么api中用@符号引入这个文件即可:

import random
from flask import Flask, jsonify, request
from flasgger import Swagger
from flasgger.utils import swag_fromapp = Flask(__name__)
Swagger(app)@app.route('/api/<string:language>/', methods=['GET'])
@swag_from('index.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", 500return jsonify(language=language,features=random.sample(features, size))app.run(debug=True)

flasgger配置文件解析:

  • 在flasgger的配置文件中,以yaml的格式描述了flasgger页面的内容;
  • tags标签中可以放置对这个api的描述和说明;
  • parameters标签中可以放置这个api所需的参数,如果是GET方法,可以放置url中附带的请求参数,如果是POST方法,可以将参数放置在schema子标签下面;
  • responses标签中可以放置返回的信息,以状态码的形式分别列出,每个状态码下可以用schema标签放置返回实体的格式;

flasgger的不足

  • flasgger的配置文件中,对于POST方法,在描述POST body的schema标签中,不支持以yaml格式描述的数组或嵌套的object,这使得页面上面无法显示这类POST body的example;
  • 解决方案:将这类POST body的example放置在description部分(三横杠”—“上面的部分),由于description部分是用html格式解析的,所以可以以html的语法编写;

参考

flasgger介绍
flasgger文档
flasgger源码
swagger官网

这篇关于python--Flasgger使用心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714572

相关文章

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Java中的record使用详解

《Java中的record使用详解》record是Java14引入的一种新语法(在Java16中成为正式功能),用于定义不可变的数据类,这篇文章给大家介绍Java中的record相关知识,感兴趣的朋友... 目录1. 什么是 record?2. 基本语法3. record 的核心特性4. 使用场景5. 自定

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”