【问题标题】:Flask-Restplus / routeFlask-Restplus / 路线
【发布时间】:2017-07-04 16:24:43
【问题描述】:

我正在尝试使用 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('/') 工作?

【问题讨论】:

    标签: python flask-restplus


    【解决方案1】:

    我发现了非常相似的问题。我想用自定义页面制作'/'路线,并在不同的路径上大摇大摆的文档。

    我的第一次尝试(不工作)

    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/返回404错误

    工作示例

    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)

    【讨论】:

    • 你太棒了。你的回答让我很开心。谢谢你! ^_^
    【解决方案2】:

    当您编写 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修复的。

    注意:在命名空间导入/声明之后,稍后注册蓝图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多