RESTful Webサービスを設計するとき、サーバー間でやり取りされる値の文字列のIDを機能するようにAPIを設計する必要がありますか?
次に例を示します。ステータスと性別の属性を持つ従業員リソースがあるとします。データベースのステータスと性別、および個別のテーブル、つまり個別のドメインオブジェクトで、それぞれが独自の識別子を持ちます。
クライアントのリクエスト/ employee / 1としましょう。サーバーが次のようなものを返す可能性があります...
ケース1:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"gender": {
"id": 1,
"gender": "FEMALE"
},
"status": {
"id": 3,
"status": "FULL_TIME"
}
}
ケース2:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"gender": "FEMALE",
"status": "FULL_TIME"
}
ケース3:
{
"id": 1,
"firstName": "Jane",
"lastName": "Doe",
"active": true,
"genderId": 1,
"statusId": 3
}
ケース3は、クライアントが性別ID 1が何であるかわからないので、向きを変えてサーバーにもう一度呼び出してそのデータを取得しない限り、最も意味がありません。
ただし、クライアントが次の方法でユーザーを更新しているとします。
PUT /employee/1
リクエストのペイロードはIDまたは文字列を使用する必要がありますか?どちらの方法でも、バックエンドはそれらが有効であることを確認するためにそれらをルックアップする必要がありますが、文字列よりもIDを処理する方が適切です。