2017-02-22 13 views
0

存在し、フラスコRESTfulなエラーハンドリングキャッチは、すべての我々は、フォームのAPIを定義するためにフラスコのRESTfulを使用している

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

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

が反応使用して、すべてのページをレンダリングします。

bp = Blueprint('index', __name__) 

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

問題は、有効なAPIエンドポイントと一致しない要求は、しかし、テンプレートをレンダリングするだけでルートのすべての未登録のAPIのルートキャッチオールロジックを与え、404を返すことになっています。

無効なAPIリクエストが404を返すようにする良い方法はありますか?ので、私の現在の回避策は少し冗長に思える何かのように、

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): 
     ... 

を定義することであるキャッチオールからのルートを除外する方法はないようです。

答えて

1

dispatch_requestの方法を単に上書きするような感じです。

@api.resource('/<path:path>') 
class Endpoint(Resource): 
    def dispatch_request(self, *args, **kwargs): 
     raise NotFound() 
関連する問題