HATEOAS (アプリ状態のエンジンとしてのハイパーメディア) の推奨事項は、クエリ文字列が RESTful ではないことを意味していますか?
編集:クエリ文字列は状態とあまり関係がない可能性があり、したがって質問は不可解であることが以下に示唆されました。クライアントが引数を入力しない限り、URI にクエリ文字列が含まれていても意味がないことをお勧めします。クライアントが引数を入力している場合、それはサーバー提供の URI を改ざんしていることになり、これが RESTful の原則に違反しているのではないかと思います。
編集 2: クライアントがそれを不透明なものとして扱う場合、クエリ文字列は無害に見えることに気付きました (クエリ文字列はレガシーであり、したがって便利である可能性があります)。ただし、以下の回答の 1 つで、Roy Fielding は、URI を透明にする必要があると述べていると引用されています。透明性があれば、粗悪品の使用が奨励され、HATEOAS の原則が希薄になると思います。そのような希釈は依然として HATEOAS と一致していますか? これは、REST が URI 構築のように見える密結合を必要としているかどうかという疑問を提起します。
更新この REST チュートリアルhttp://rest.elkstein.org/では、URI の構築は不適切な設計であり、RESTful ではないことが示唆されています。また、受け入れられた回答で @zoul が言ったことを繰り返します。
たとえば、「製品リスト」リクエストは製品ごとに ID を返す可能性があり、仕様ではhttp://www.acme.com/product/PRODUCT_IDを使用して追加の詳細を取得する必要があると規定されています。それは悪い設計です。むしろ、応答には各項目に実際の URL を含める必要があります: http://www.acme.com/product/001263など。はい、これは出力が大きいことを意味します。ただし、必要に応じてクライアントを新しい URL に簡単に誘導できることも意味します。
人間がこのリストを見ていて、彼/彼女が見ることができるものを望んでいない場合、「前の 10 項目」と「次の 10 項目」ボタンがあるかもしれませんが、人間がいない場合はクライアント プログラムです。 、REST のこの側面は、クライアント プログラムが使用しない可能性のあるすべての「 http://www 」のために、少し奇妙に思えます。