1

特定のオブジェクトに対して GET (リソースを要求するため) と PATCH (さまざまなインクリメンタルで非べき等な更新を実行するため) の両方を受け入れる新しい RESTful API を Flask で作成しています。問題は、パッチを適用するデータの一部は認証する必要があり、一部は認証してはならないということです。

例でこれを明確にするために、リソースがクリックされた回数とそのページが表示された回数を全員が照会できるアプリを構築しているとしましょう。また、リソースが再度クリックされたことを示す JavaScript でリソースの更新を行うこともできます (フロントエンドからのものであるため、認証されていません)。さらに、認証されたバックエンドがページが表示された回数を増やします。

したがって、RESTful の原則に従って、3 つのアクションはすべて同じパスで実行する必要があると考えています。たとえば/pages/some_page_name、GET と PATCH の両方を受け入れ、PATCH で 2 種類のデータを受け入れる必要があります。問題は、Flask では、認証は常にメソッドの周りのデコレーターで行われるように見えるため、 のようなメソッドがある場合@app.route('/pages/<page_id>', methods=['GET', 'PATCH'])、認証はそのメソッド全体のようなデコレーターで行われ、@auth.login_requiredそのメソッドでさえ強制されることです。認証を認証する必要はありません。

したがって、私の質問は 3 つあります。

  1. 同じパスの下で言及されている 3 つのアクションすべてを構造化することは正しいですか? これは重要ですか?
  2. 私が正しく、これが重要である場合、1 種類の PATCH に対してのみ認証を要求するにはどうすればよいですか?
  3. これが重要でない場合、この API を構造化するためのより良い方法またはより簡単な方法は何ですか?
4

1 に答える 1