从你的烧瓶项目中提取夸张的规格

iknl-flasgger的Python项目详细描述


弗拉斯格

适用于您的烧瓶API的简单招摇用户界面

构建状态代码健康coverage statuspypi

flasgger

flasgger是从您的api中注册的所有烧瓶视图中提取openapi=specification的烧瓶扩展。

flasgger还附带了swaggerui嵌入式,因此您可以访问http://localhost:5000/apidocs并可视化和与您的api资源交互。

flasgger还提供对传入数据的验证,使用与它可以验证作为post、put、patch接收的数据是否对使用yamlpython字典或棉花糖模式定义的模式有效的相同规范。s

flasger可以使用简单的函数视图或methodview,使用docstring作为规范,或者使用@swag\u fromdecorator从yamldict获取规范,还提供swaggerview它可以使用棉花糖模式。按规范。

flasgger与flask restful兼容,因此您可以同时使用资源和swag规范,查看restful示例。

flasger还支持将棉花糖apispec作为规范的基本模板,如果您使用的是来自棉花糖的apispec,请查看apispec示例。

示例和演示应用程序

有一些示例应用程序,您也可以在flasger演示应用程序中使用示例。 < Buff行情>

注意:所有示例应用程序也是测试用例,并在Travis CI中自动运行,以确保质量和覆盖范围。

< H2>码头工人< /H2>

示例和演示应用程序也可以作为Docker图像/容器来构建和运行:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger

然后访问flasgger演示应用程序,网址为http://localhost:5000

安装

< Buff行情>

在您的virtualenv do下:

确保您有最新的设置工具

pip install -U setuptools

那么

pip install flasgger

或(开发版本)

pip install https://github.com/rochacbruno/flasgger/tarball/master
< Buff行情>

注意:如果要使用棉花糖模式,还需要运行pip install marshmallow apispec

入门

使用docstrings作为规范

创建一个文件,例如colors.py

fromflaskimportFlask,jsonifyfromflasggerimportSwaggerapp=Flask(__name__)swagger=Swagger(app)@app.route('/colors/<palette>/')defcolors(palette):"""Example endpoint returning a list of colors by palette    This is using docstrings for specifications.    ---    parameters:      - name: palette        in: path        type: string        enum: ['all', 'rgb', 'cmyk']        required: true        default: all    definitions:      Palette:        type: object        properties:          palette_name:            type: array            items:              $ref: '#/definitions/Color'      Color:        type: string    responses:      200:        description: A list of colors (may be filtered by palette)        schema:          $ref: '#/definitions/Palette'        examples:          rgb: ['red', 'green', 'blue']    """all_colors={'cmyk':['cian','magenta','yellow','black'],'rgb':['red','green','blue']}ifpalette=='all':result=all_colorselse:result={palette:all_colors.get(palette)}returnjsonify(result)app.run(debug=True)

现在运行:

python colors.py

然后转到:http://localhost:5000/apidocs/" rel="nofollow">http://localhost:5000/apidocs/

你应该得到:

colors

使用外部yaml文件

保存新文件colors.yml

Example endpoint returning a list of colors by paletteIn this example the specification is taken from external YAML file---parameters:-name:palettein:pathtype:stringenum:['all','rgb','cmyk']required:truedefault:alldefinitions:Palette:type:objectproperties:palette_name:type:arrayitems:$ref:'#/definitions/Color'Color:type:stringresponses:200:description:A list of colors (may be filtered by palette)schema:$ref:'#/definitions/Palette'examples:rgb:['red','green','blue']

让我们使用相同的示例,只更改视图功能。

fromflasggerimportswag_from@app.route('/colors/<palette>/')@swag_from('colors.yml')defcolors(palette):...

如果不想使用decorator,可以使用docstring文件:快捷方式。

@app.route('/colors/<palette>/')defcolors(palette):"""    file: colors.yml    """...

使用字典作为原始规格

将python字典创建为:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
0

现在使用相同的函数,用dict代替yaml文件。

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
1

使用棉花糖模式

< Buff行情>

首先:pip安装棉花糖apispec

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
2 < Buff行情>

注意:查看examples/validation.py以获得更完整的示例。

< Buff行情>

注意:在路径规则中捕获参数时总是使用显式类型,错误:/api/<;username>;正确:/api/<;字符串:username>;

使用瓶装饮料资源

flasgger与flask restful兼容您只需安装pip install flask restful然后:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
3

自动分析外部yaml文档和methodviews

flasgger可以配置为自动分析外部yam api文档。app.config['swagger']中设置adoc_dir,swagger将通过在doc_dir中查找yaml文件来加载api文档按终结点名称和方法名称存储。例如,'doc-dir':'./examples/docs/'和一个文件/examples/docs/items/get.yml将为itemsview方法get提供一个夸张的文档

此外,当使用上述的flask restful时,flasger将通过在构造swagger时传递parse=true来使用flask restful.reqparse.requestparser,找到所有methodview并将解析和验证的数据存储在烧瓶.请求.分析数据

为单个函数处理多个http方法和路由

您可以按端点或方法分离规范

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
4

在方法视图中的多个方法也可以通过 多次注册url_规则。看一看示例/example\u应用程序

使用相同的数据验证您的api post主体。

swag_from'svalidation参数设置为true将自动验证传入数据:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
5

也可以使用swagger.validate注释:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
6

但是您可以手动调用validate

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
7

也可以在swaggerview中定义validation=true specs\u dict用于验证。

查看examples/valpy了解更多信息。

所有验证选项都可以在http://json schema.org/latest/json-schema-validation.html" rel="nofollow">http://json schema.org/latest/json schema validation.html中找到

自定义验证

默认情况下,flasgger将使用python jsonschema 执行验证。

只要满足要求,就支持自定义验证功能:

  • 只接受两个位置参数:
    • 要验证为第一个的数据;和
    • 要作为第二个参数验证的架构
  • 验证失败时引发任何类型的异常。

任何返回值都将被丢弃。

将函数提供给swagger实例将使其成为默认值:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
8

提供函数作为swag_fromswagger的参数。validate 注释或直接指向validate函数将强制使用 超过swagger的默认验证功能:

docker build -t flasgger .
docker run -it --rm -p 5000:5000 --name flasgger flasgger
9
pip install -U setuptools
0
pip install -U setuptools
1

验证错误处理

默认情况下,flasgger将通过中止 带有错误消息的400错误请求响应请求。

自定义验证错误处理函数可以提供给 只要满足要求,就取代默认行为:

  • 只接受三个位置参数:
    • 作为第一个出现的错误;
    • 作为第二个验证失败的数据;以及
    • 中用于验证为第三个参数的架构

将函数提供给swagger实例将使其成为默认值:

pip install -U setuptools
2

提供函数作为swag_fromswagger的参数。validate 注释或直接指向validate函数将强制使用 超过swagger的默认验证功能:

pip install -U setuptools
3
pip install -U setuptools
4
pip install -U setuptools
5

使用自定义验证错误处理程序函数的示例可以是 可在example validation\u error\u handler.py找到

获取定义为python字典的模式

您可能希望使用您在自大规范中定义的模式作为字典。 不复制规范。为此,您可以使用获取模式 方法:

pip install -U setuptools
6

此方法返回包含flasgger模式id的字典, 所有定义的参数和所需参数列表。

HTML消毒剂

默认情况下,flasgger将尝试清理yaml定义中的内容。 将每个\n替换为<;br>;,但您可以更改此行为 设置另一种消毒剂。

pip install -U setuptools
7

您可以自己编写消毒剂

pip install -U setuptools
8

如果您希望能够呈现 规格说明中的标记使用mk_消毒剂

招摇过市的用户界面和模板

您可以覆盖应用程序中的模板/flasgger/index.html,然后 此模板将是swaggerui的index.html。使用flasgger/ui2/templates/index.html 作为定制的基础。

flasger支持2版和3版的用户界面,3版仍处于试验阶段,但是 可以尝试设置app.config['swagger']['uiversion']

pip install -U setuptools
9

外部加载swagger ui和jquery js/css

从flasgger 0.9.2开始,可以为flasgger默认模板中加载的swagger和jquery库指定用于加载javascript和css的外部url位置。如果省略下面的配置属性,flasger将提供它所包含的静态版本-这些版本可能比当前的swagger ui v2或v3版本要旧。

下面的示例从unpkg.com:

pip install flasgger
0

用默认数据初始化flasgger。

您可以使用任何提供模板的默认数据启动您的swagger规范:

pip install flasgger
1

然后模板是默认数据,除非某些视图更改了它。你 还可以将所有规范作为模板提供,并且没有视图。或观点 外部应用程序。

在运行时获取默认数据

有时,您需要根据动态值在运行时获取一些数据例如:您想检查请求是否安全以确定方案是否为https您可以使用lazystring来实现这一点

pip install flasgger
2

只有当jsonify在运行时对值进行编码时,lazystring值才会被计算,因此您可以访问flask请求、会话、g等,还可以访问数据库。

在反向代理后面

有时,你在反向代理(例如nginx)后面提供你的狂妄文档。当遵循烧瓶指南时, 虚张声势的文档将正确加载,但"试用"按钮指向错误的位置。可以使用以下代码修复此问题:

pip install flasgger
3

自定义默认配置

可以为flasger提供自定义配置,例如不同的specs路由或禁用swagger ui:

pip install flasgger
4

提取定义

当在规范中找到id时,可以提取定义,例如:

pip install flasgger
5

在本例中,您不必传递定义,但需要将id添加到 您的模式。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java LinkedHashMap搜索   java将类及其所有依赖项移动到另一个项目   java doGet和doPost之间有什么区别?   java统计实体JPA的所有特定属性   Neo4j服务器的java推荐设置   java我可以设置GAE的dev_appserver,以便在更改时自动重新加载上下文。类文件?   mysql我试图使用java记录保存项目,但该程序似乎无法连接到数据库   java PDA在挂起模式下失去与ServerSocket的TCP连接   当应用spring安全性时,java找不到jsp视图   javascript如何通过Web视图从React组件的构造函数执行Java函数   java为什么在一个线程迭代(使用迭代器)而另一个线程修改同一个非线程安全ArrayList副本时没有ConcurrentModificationException   java调试与Eclipse JD行不匹配   java文本字段,用于在JavaFX聊天应用程序中输入文本和插入图像