2

真に安らかなアプリケーションでは、リンクをたどってリソースにアクセスする必要がありますが、「既知の魔法の URL」だけがアプリケーションのエントリ ポイントになる必要があります。のような直接クエリGET /user/johnは、少なくともリンクを取得した後、/userまたは前のリンクで指定された検索 URL からの結果として発行する必要があります。GET /user?username=john

しかし、リンクをたどると、より多くの機能、さらなる開発時間、およびよりスマートなクライアントが強制されるため、実際には、私が作成して使用したほとんどの安静な API は部分的に安静です: それらは明確に定義された URI とメソッドのコレクションであり、すべて以前に知られていました。いくつかのドキュメントによってユーザーに。最終的に、REST が意味するState Transfer部分は、それらのほとんどに存在しません。

さて、URL が以前から知られているという現実に従って、404コードが問題になります。次の 2 つの意味を区別する方法404:

  • 「リソースが見つかりませんが、後でもう一度試すことができます」という意味の正解404。例:マリオは登録ユーザーではありませんGET /user/mario

  • 「ここではリソースが見つからないため、この API を間違って使用しています」という意味の API の誤った使用法。例:GET /foobar/123

これらの 2 つのシナリオを区別することはちょっと重要です。なぜなら、サービス メンテナーとして、彼らは基本的に、それが予想されるエラーであり、心配する必要がない (最初のケース) または予期しないエラーであり、私のクライアントに問題がある (2 番目のケース)

2 番目のケースを表すために、より適切なステータス コードを検索してみました。見つかった最も近いものは、 (ただし、これは満たすことができないヘッダーに406 Not Acceptable向けられた応答です) と(リソースがないため混乱する可能性があります。ただし、良い点は、その URL を二度と試行しないようにクライアントに指示することです)。それにもかかわらず、この 2 つのいずれも、これを解決するために使用するのに十分ではありません。Accept410 Gone

それを解決するためにどのようにしましたか、またはどのようにしますか?

Side node : python eveは、この部分で安らかな API になろうとする興味深いプロジェクトですState Transfer。そのためにHATEOASを実装しています

4

2 に答える 2