从你的烧瓶项目中提取夸张的规格
iknl-flasgger的Python项目详细描述
弗拉斯格
适用于您的烧瓶API的简单招摇用户界面
flasgger是从您的api中注册的所有烧瓶视图中提取openapi=specification的烧瓶扩展。
flasgger还附带了swaggerui嵌入式,因此您可以访问http://localhost:5000/apidocs并可视化和与您的api资源交互。
flasgger还提供对传入数据的验证,使用与它可以验证作为post、put、patch接收的数据是否对使用yaml、python字典或棉花糖模式定义的模式有效的相同规范。s
flasger可以使用简单的函数视图或methodview,使用docstring作为规范,或者使用@swag\u from
decorator从yaml或dict获取规范,还提供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/
你应该得到:
使用外部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
以获得更完整的示例。
注意:在路径规则中捕获参数时总是使用显式类型,错误:/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文档和methodview
s
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_from
或swagger的参数。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_from
或swagger的参数。validate
注释或直接指向validate
函数将强制使用
超过swagger的默认验证功能:
pip install -U setuptools
3
pip install -U setuptools
4
pip install -U setuptools
5