RESTful APIはどの程度分離すべきですか?


12

以前にRESTful APIを作成したことはありませんが、RESTful APIをどの程度分離すべきか疑問に思っていますか?

たとえば、名前、住所、電話番号、メールアドレス、言語などを持っている顧客がいるとしましょう。

個々のフィールドを更新する方法(アドレスの更新、電子メールアドレスの更新など)があるのは理にかなっていますか、それとも顧客全体に対して単一の更新があり、各フィールドはオプションですか?


3
RESTのどの部分が必要ですか?標準を気にせずに単純なAPIが必要な場合は、ThorstenMüllerの受け入れられている答えと同じように処理できます。実際のRESTが必要な場合は、Roy Fielding(+ dissertationなど)を検索する必要があります。彼はRESTの発明者です。たとえば、リソース==テーブルは真実ではないという考えがわかります。また、たとえば、質問の場合、1つ以上のフィールドを更新するためにPATCH HTTPメソッドを使用するのが非常に一般的であることがわかります。リソースの完全な更新のためにPOSTまたはPUT(ここでは多くの議論)メソッドを使用できる場所。
リュックフランケン14年

回答:


17

リソースに対して1つの更新アクションがあります。大まかな経験則として、データベース内のテーブルはリソースになります。したがって、この例では、1つの更新アクションを持つ顧客用のコントローラーが1つあり、フィールドは可能な限りオプションです。

これには例外があります(たとえば、パスワードとpassword_confirmationを期待するパスワードを更新する場合)が、これはほとんどの場合に当てはまります。

例外は、作成および破棄のみが可能なSessionsControllerなど、一部のリソースに対するアクションが制限されているコントローラーである可能性が高くなります。単一のフィールドに対してアクションが必要になることはほとんどありません。

あなたの例では、一つのことはそれ自身のリソースとして扱うことができ、それがアドレスです。住所のテーブルがある場合、特に顧客ごとに複数の住所がある場合(請求、配達など)、これはネストされたリソースとして処理できます。ただし、ここでもアドレスリソース全体に対して1つの更新アクションがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.