当catch全部存在时,Flask RESTful错误处理

时间:2017-02-22 22:58:47

标签: python flask flask-restful

我们使用Flask-RESTful来定义表单的API,

bp = Blueprint('api', __name__, url_prefix='/api')
api = Api(bp)

@api.resource('/users/<int:user>')
class User(Resource):
    def get(self, user):
        ...

Catch-All一起使用React渲染所有页面。

bp = Blueprint('index', __name__)

@bp.route('/', defaults={'path': ''})
@bp.route('/<path:path>')
def index(path):
    return render_template('index.html')

问题是与有效API端点不匹配的请求应该返回404,但是在给定Catch-All逻辑的情况下,所有未注册的API路由都只是路由到呈现模板。

有没有一种方法可以确保无效的API请求返回404?似乎没有办法从Catch-All中排除路线,所以我目前的解决方法是定义类似的东西,

from werkzeug.routing import NotFound

@api.resource('/<path:path>')
class Endpoint(Resource):
    def get(self, path):
        raise NotFound()

    def put(self, path):
        raise NotFound()

    def post(self, path):
        ...

这似乎有点冗长。

0 个答案:

没有答案