我们使用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):
...
这似乎有点冗长。