Flask-Restplus/路线
Flask-Restplus / route
我正在尝试使用 Flask-Restplus 制作一个 api 并用 swagger 记录它。
这是我目前所拥有的,它工作正常,除了我不知道如何添加根路由。
from flask import Flask, Blueprint
from flask_restplus import Api, Resource, apidoc
app = Flask('__name__')
blueprint = Blueprint('v1', __name__, url_prefix='/rest/v1')
api = Api(blueprint, ui=False, version='1.0')
@blueprint.route('/apidoc/', endpoint='apidoc')
def swagger_ui():
return apidoc.ui_for(api)
@blueprint.route('/', endpoint='rootres')
def root():
return ''
app.register_blueprint(blueprint)
ns = api.namespace('test', description='desc')
@ns.route('/', endpoint='rootresource')
class RootResource(Resource)
def get(self):
...
虽然 /rest/v1/test 工作正常,但 /rest/v1 提示找不到页面。
如果我这样修改:
@blueprint.route('/aaa', endpoint='rootres')
def root():
return ''
然后 /rest/v1/aaa 工作。
问题:如何让@blueprint.route('/') 工作?
当您编写 ui=False
时,您禁用了 /rest/v1/
路径。
在下一个即将发布的版本(本周末的 0.8.1)中,您应该能够编写:
from flask import Flask, Blueprint
from flask_restplus import Api, Resource
app = Flask('__name__')
blueprint = Blueprint('v1', __name__, url_prefix='/rest/v1')
api = Api(blueprint, doc='/apidoc/', version='1.0')
@blueprint.route('/', endpoint='rootres')
def root():
return ''
ns = api.namespace('test', description='desc')
@ns.route('/', endpoint='rootresource')
class RootResource(Resource)
def get(self):
...
app.register_blueprint(blueprint)
不再需要为文档注册特定视图
对于`blueprint.route('/'),我认为这也是由 0.8.1 修复的。
注意:稍后在命名空间 import/declaration.
之后注册蓝图
我发现了非常相似的问题。我想使用自定义页面制作“/”路由,并在不同的路径上制作 swagger 文档。
我的第一次尝试(不成功)
from flask import Flask
from flask_restplus import Api
app = Flask(__name__)
api = Api(
app= app,
version='1.0',
description='TEST API',
doc='/docs/',
)
@app.route('/')
def hello():
return "Hello on my page"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
页面http://127.0.0.1:5000/
return404错误
工作示例
from flask import Flask
from flask_restplus import Api
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello on my page"
api = Api(
app= app,
version='1.0',
description='TEST API',
doc='/docs/',
default='mapi',
default_label='Super API'
)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
测试于:
- Python 3.6.1
- 烧瓶 (0.12.1)
- flask-restplus (0.10.1)
我正在尝试使用 Flask-Restplus 制作一个 api 并用 swagger 记录它。
这是我目前所拥有的,它工作正常,除了我不知道如何添加根路由。
from flask import Flask, Blueprint
from flask_restplus import Api, Resource, apidoc
app = Flask('__name__')
blueprint = Blueprint('v1', __name__, url_prefix='/rest/v1')
api = Api(blueprint, ui=False, version='1.0')
@blueprint.route('/apidoc/', endpoint='apidoc')
def swagger_ui():
return apidoc.ui_for(api)
@blueprint.route('/', endpoint='rootres')
def root():
return ''
app.register_blueprint(blueprint)
ns = api.namespace('test', description='desc')
@ns.route('/', endpoint='rootresource')
class RootResource(Resource)
def get(self):
...
虽然 /rest/v1/test 工作正常,但 /rest/v1 提示找不到页面。
如果我这样修改:
@blueprint.route('/aaa', endpoint='rootres')
def root():
return ''
然后 /rest/v1/aaa 工作。
问题:如何让@blueprint.route('/') 工作?
当您编写 ui=False
时,您禁用了 /rest/v1/
路径。
在下一个即将发布的版本(本周末的 0.8.1)中,您应该能够编写:
from flask import Flask, Blueprint
from flask_restplus import Api, Resource
app = Flask('__name__')
blueprint = Blueprint('v1', __name__, url_prefix='/rest/v1')
api = Api(blueprint, doc='/apidoc/', version='1.0')
@blueprint.route('/', endpoint='rootres')
def root():
return ''
ns = api.namespace('test', description='desc')
@ns.route('/', endpoint='rootresource')
class RootResource(Resource)
def get(self):
...
app.register_blueprint(blueprint)
不再需要为文档注册特定视图
对于`blueprint.route('/'),我认为这也是由 0.8.1 修复的。
注意:稍后在命名空间 import/declaration.
之后注册蓝图我发现了非常相似的问题。我想使用自定义页面制作“/”路由,并在不同的路径上制作 swagger 文档。
我的第一次尝试(不成功)
from flask import Flask
from flask_restplus import Api
app = Flask(__name__)
api = Api(
app= app,
version='1.0',
description='TEST API',
doc='/docs/',
)
@app.route('/')
def hello():
return "Hello on my page"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
页面http://127.0.0.1:5000/
return404错误
工作示例
from flask import Flask
from flask_restplus import Api
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello on my page"
api = Api(
app= app,
version='1.0',
description='TEST API',
doc='/docs/',
default='mapi',
default_label='Super API'
)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
测试于:
- Python 3.6.1
- 烧瓶 (0.12.1)
- flask-restplus (0.10.1)