上篇文章主要介绍了
开启文档
上一篇文章已经提到, 文档默认是开启的,而且默认挂载到
1 2 3 4 5 6 7 8 9 10 | from flask import Flask from flask_restplus import Api, Resource app = Flask(__name__) api = Api(app, doc='/doc', version='1.0', title='学习 Flask-RESTPlus') @api.route('/hello') class HelloWorld(Resource): def get(self): return {'hello': 'world'} |
此时
如上所示,文档的标题为
1 2 | api_v1 = Blueprint('api_v1', __name__, url_prefix='/api/v1') api = Api(api_v1, version='1.0', title='API') |
通过命名空间渲染文档
上一小节中的文档渲染出来为默认的命名空间, 一个命名空间对应一个资源, 它的文档也将列在其命名空间下, 以下为示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | from flask_restplus import Api, Namespace, Resource app = Flask(__name__) api = Api(app, doc='/', version='1.0', title='待办列表API') todos = Namespace('todos', description='待办列表') practice = Namespace('practice', description='练习') api.add_namespace(todos) api.add_namespace(practice) @todos.route('') class TODOList(Resource): def get(self): return [] @practice.route('') class Practice(Resource): def get(self): return [] |
渲染出的文档结果如下所示, 可以看到渲染出的文档一目了然:
对象模型
使用
基础用法
1 2 3 4 5 | model = api.model('Model', { 'name': fields.String, 'address': fields.String, 'date_updated': fields.DateTime(dt_format='rfc822'), }) |
以上创建了一个名为
渲染效果
1 2 3 4 5 6 | @todos.route('') class TODOList(Resource): @todos.expect(model) @todos.response(code=200, model=model, description='请求成功响应') def get(self): return [] |
如图所示,
模型字段
模型提供了很多直接对应
fields.Integer 表示数字fields.String 表示字符串fields.Datetime 表示日期fields.List 表示列表fields.List(fields.String) 将列表项字段传入其中即可
etc
除了这些常规字段,如果一个字段对应的值是另一个模型, 类似与数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | model = api.model('Model', { 'name': fields.String, 'address': fields.String, 'date_updated': fields.DateTime(dt_format='rfc822'), }) # 直接引用一个模型 another_model = api.model('AnotherModel', { 'model': fields.Nested(model) }) # 引用模型列表 another_model = api.model('AnotherModel', { 'model': fields.List(fields.Nested(model)) }) # 或者 another_model = api.model('AnotherModel', { 'model': fields.Nested(model, as_list=True) }) |
还有一些其他字段以及高阶用法, 可以参考文档
字段属性
类似于
required 用来设置是否为必传参数, 默认为False readonly 用来设置只读, 表示只有在响应的时候才会出现, 默认为None example 用力设置示例, 默认为None description 属性用来描述当前字段信息, 默认为None
部分字段属性同时也提供了参数校验功能, 对于
enum 一个列表, 字段的值只能是其中的某一个min_length 字段最小长度max_length 字段最大长度pattern 使用正则判断
对于
min 最小值max 最大值exclusiveMin : 如果为True , 则左开区间, 默认为False exclusiveMax : 如果为True , 则右开区间, 默认为False multiple : 值必须是这个数的倍数
开启参数验证
使用
使用 parser 进行参数验证
如上所述, 模型是以
url 参数渲染
对于
总结
使用两篇文章分别介绍了