本文介绍了移动Flask-Restplus Swagger API文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用flask-restplus在python中构建一个Restful API.我想将招摇的文档放在与普通的"/"不同的位置.

I'm trying to use flask-restplus to build a restful API in python. I'd like to have the swagger docs located in a different place than the normal "/".

我正在文档此处,并已按照说明进行操作.我正在使用python2.7.3,并具有以下代码~/dev/test/app.py:

I'm following the documentation here and have followed the instructions. I'm using python2.7.3 and have the following code ~/dev/test/app.py:

from flask import Flask
from flask.ext.restplus import Api, apidoc

app = Flask(__name__)
api = Api(app, ui=False)

@api.route('/doc/', endpoint='doc')
def swagger_ui():
    return apidoc.ui_for(api)

app.register_blueprint(apidoc.apidoc)

当我尝试运行此python app.py时,我得到:

When I try to run this python app.py I get:

Traceback (most recent call last):
  File "app.py", line 7 in <module>
    @api.route('/doc/', endpoint='doc')
  File "/home/logan/.virtualenvs/test/lib/python2.7/site-packages/flask_restplus/api.py", line 191, in wrapper
    self.add_resources(cls, *urls, **kwargs)
  File "/home/logan/.virtualenvs/test/lib/python2.7/site-packages/flask_restplus/api.py", line 175, in add_resource
    super(Api, self).add_resource(resource, *urls, **kwargs)
  File "/home/logan/.virtualenvs/test/lib/python2.7/site-packages/flask_restful/__init__.py", line 396, in add_resource
    self._register_view(self.app, resource, *urls, **kwargs)
  File "/home/logan/.virtualenvs/test/lib/python2.7/site-packages/flask_restful/__init__.py", line 435, in _register_view
    resource_func = self.output(resource.as_view(endpoint, *resource_class_args,
AttributeError: 'function' object has no attribute 'as_view'

我不太确定到底是什么地方出了问题,我想我知道我没有继承Resource,而as_view通常是从那里继承的,但是文档似乎表明这应该起作用

I'm not really sure what exactly is going wrong, I guess I understand that I haven't inherited from Resource which is where as_view would normally come from, but the documentation seems to indicate that this should work.

将提供任何帮助.

推荐答案

对于Flask-Restplus< = 0.8.0,您应该这样写:

With Flask-Restplus <= 0.8.0 you should write:

from flask import Flask
from flask.ext.restplus import Api, apidoc

app = Flask(__name__)
api = Api(app, ui=False)

@app.route('/doc/', endpoint='doc')
def swagger_ui():
    return apidoc.ui_for(api)

请注意使用@app代替@api

从v0.8.1(即将发布)开始,您只需编写:

Starting from v0.8.1 (soon to be released), you will simply have to write:

from flask import Flask
from flask.ext.restplus import Api, apidoc

app = Flask(__name__)
api = Api(app, doc='/doc/')

请参阅: http://flask-restplus.readthedocs. org/en/latest/swagger.html#swagger-ui

这篇关于移动Flask-Restplus Swagger API文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-05 09:04