3

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 では Page not found と表示されます。

次のように変更すると:

@blueprint.route('/aaa', endpoint='rootres')
   def root():
      return ''

その後、 /rest/v1/aaa が機能します。

質問: @blueprint.route('/') を機能させるにはどうすればよいですか?

4

2 に答える 2

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 で修正されていると思います。

注: 名前空間のインポート/宣言の後、ブループリントを後で登録します。

于 2015-10-14T21:13:22.020 に答える