Move Flask-Restplus Swagger API Docs
With Flask-Restplus <= 0.8.0 you should write:
from flask import Flaskfrom flask.ext.restplus import Api, apidocapp = Flask(__name__)api = Api(app, ui=False)@app.route('/doc/', endpoint='doc')def swagger_ui(): return apidoc.ui_for(api)
Note the use of a @app
instead of @api
Starting from v0.8.1 (soon to be released), you will simply have to write:
from flask import Flaskfrom flask.ext.restplus import Api, apidocapp = Flask(__name__)api = Api(app, doc='/doc/')
See: http://flask-restplus.readthedocs.org/en/latest/swagger.html#swagger-ui
After recently struggling with this myself, I've had luck with this approach:
from flask import Flask, Blueprintfrom flask.ext.restplus import Api, apidocapp = Flask(__name__)blueprint = Blueprint('api', __name__)api = Api(blueprint, ui=False)@blueprint.route('/doc/', endpoint='doc')def swagger_ui(): return apidoc.ui_for(api)app.register_blueprint(blueprint)
It looks like @api will need Resource, so I modified the code a bit to get around the error. The following will work only at /doc/, not the default root level.
from flask import Flask, make_responsefrom flask.ext.restplus import Api, apidoc, Resourceapp = Flask(__name__)api = Api(app, ui=False)@api.route('/doc/', endpoint='doc', doc=False)class ApiDoc(Resource): def get(self): return make_response(apidoc.ui_for(api))app.register_blueprint(apidoc.apidoc)if __name__ == '__main__': app.run(debug=True)