我正在使用Flask框架和Flask-RESTful插件编写RESTful API.我在Resource这个插件提供的类之上定义了我的API类,如示例所示.但是,当我想使用该add_resource方法注册我的类时,我收到以下错误:
AttributeError: type object 'UserAPI' has no attribute 'as_view'
Run Code Online (Sandbox Code Playgroud)
该as_view方法是Flask Pluggable Views的一部分,也就是View该类.这个Resource类建立在这个类的基础之上,而我的UserAPI类建立在类的顶层Resource.出于这个原因,该as_view方法应该是继承的,但事实并非如此.
任何想法可能是问题?
在这里你可以看到我如何定义类:
from app import api, db
from flask.ext.restful import Resource, abort
from models import *
class UserAPI(Resource):
def get(self, user_id):
user = User.query.filter(User.id == user_id)[0]
if user is None:
abort(404, message="User {} doesn't exist".format(user_id))
else:
return {'user' : user}, 201
api.add_resource(UserAPI, '/api/v0.1/users/<int:user_id>', endpoint = 'user')
Run Code Online (Sandbox Code Playgroud)
编辑: …
我正在尝试使用flask-restplus 在python 中构建一个restful API。我想让 swagger 文档位于与普通“/”不同的位置。
我正在关注此处的文档并已按照说明进行操作。我正在使用 python2.7.3 并具有以下代码~/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)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,python app.py我得到:
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, …Run Code Online (Sandbox Code Playgroud)