像下面这样,一部分显示了接口的标题,一部分没有显示
去查了官方文档也没有什么成果,搜了很多资料也没查到,结果一场意外发现,这居然和两个看起来完全不相关的东西相关,一个是我的token验证装饰器,一个是注释?!官方文档提供的@api.doc反而加不加都不影响!
当我去掉token验证,并在get方法里加上“”“获取所有奖项信息”“”的注释之后,标题就显示出来了
我看了半天没明白为什么我的装饰器会影响它的装饰器
于是试了一下,把token验证加到了整个flask-restplus api的最前面,就可以了
具体代码
__init__.py
from flask_restplus import Api
from flask import Blueprint
from app.main.controller.prize_controller import api as prize_ns
blueprint = Blueprint('api', __name__)
authorizations = {
'apikey': {
'type': 'apiKey',
'in': 'header',
'name': 'Authorization'
}
}
api = Api(
blueprint,
title='抽奖项目接口',
version='1.0',
description='',
authorizations=authorizations,
security='apikey'
)
api.add_namespace(prize_ns, path='/api/prize')
app/main/controller.py
from app.main.util.dto import PrizeDto
api = PrizeDto.api
_prize = PrizeDto.prize
@access_role_type(role_type=[1])
@api.route('')
class PrizeList(Resource):
@api.doc('获取所有奖项列表')
@token_required
def get(self):
"""获取所有奖项信息"""
search = request.args
p = 0
n = 15
if 'p' in search:
p = int(search['p']) - 1
if 'n' in search:
n = int(search['n'])
return get_prize_list(search, p, n)
app/main/util/dto.py
from flask_restplus import Namespace, fields
class PrizeDto:
api = Namespace('prize', description='奖项相关')
prize = api.model('prize', {
'id': fields.Integer(required=False, description='编号'),
'activity_id': fields.Integer(required=True, description='活动id'),
...
})
文档访问地址就是自己的域名
如,本地127.0.0.1:5000/