4

コレクション リソースの設計に混乱があります。以下のように表されるユーザーリソースがあるとしましょう。

http://www.example.com/users/{user-id}
user : {
  id : "",
  name : "",
  age : "",
  addresses : [
    {
      line1 : "",
      line2 : "",
      city : "",
      state : "",
      country : "",
      zip : ""
    }
  ]
}

では、users コレクションのリソース表現はどのようにすべきでしょうか? (上記のように) ユーザー表現のリストである必要がありますか? または、以下のようなサブセットにすることもできます:

http://www.example.com/users/
users : [
  {
    id : "",
    name : "",
    link : {
      rel : "self",
      href : "/users/{id}"
    }
  }
]

コレクションのリソース表現には、それを含むリソースの完全な表現を含める必要がありますか?それともサブセットにすることができますか?

4

5 に答える 5

8

メディア タイプは、情報を伝える方法に関するルールを定義します。あなたがやろうとしていることを行う方法の例については、 Collection+JSONおよびHALの仕様を参照してください。

于 2013-07-01T17:24:00.837 に答える
0

それは完全にあなたがしたいことにかかっています。REST API の優れた点は、非常に柔軟であることです。任意の方法で (理論的には) データを表すことができます。

個人的には、ユーザーが表現のサブセットまたはスタイルを指定できるようにする属性が必要です。たとえば、/users/{userid}.json?output=simpleまたは/users/{userid}.json?subset=raw

これらの線に沿ったものを使用すると、柔軟性を犠牲にすることなく、表現をネストして、必要なものを微調整することもできます。

/users/{userid}.json?output=simple&subset=raw

空が限界

于 2013-07-01T16:06:16.230 に答える
0

サブセット化できますが、データに依存します。以下のコードを見てください。

{
    "usersList": {
        "users": [{
            "firstName": "Venkatraman",
            "lastName": "Ramamoorthy",
            "age": 27,
            "address": {
                "streetAddress": "21 2nd Street",
                "city": "New York",
                "state": "NY",
                "postalCode": 10021
            },
            "phoneNumbers": [{
                "type": "mobile",
                "number": "+91-9999988888"
            }, {
                "type": "fax",
                "number": "646 555-4567"
            }]
        }, {
            "firstName": "John",
            "lastName": "Smith",
            "age": 25,
            "address": {
                "streetAddress": "21 2nd Street",
                "city": "New York",
                "state": "NY",
                "postalCode": 10021
            },
            "phoneNumbers": [{
                "type": "home",
                "number": "212 555-1234"
            }, {
                "type": "fax",
                "number": "646 555-4567"
            }]
        }]
    }
}
于 2013-07-01T16:30:23.407 に答える