8

我有一个葡萄酒实体,它与一个国家以一对多关系相关(一个国家 - 许多葡萄酒)

我可以想到两种在 json Web 服务中表示这一点的方法:

一个只是将整个国家包含在一个json中

{
  id: 76,
  code: "FR",
  name: "France"
}

{
  id: 79,
  name: "Bordeaux",
  country: {
      id: 76,
      code: "FR",
      name: "France"
    },
  year: "2005"
}

另一种是将每个国家/地区属性包含到同一级别,并带有前缀

{
  id: 79,
  name: "Bordeaux",
  countryId: 76,
  countrCode: "FR",
  countryName: "France"
  year: "2005"
}

无论如何,在更新或创建新葡萄酒时,我只会保存国家/地区 id,我不会允许从葡萄酒的端点修改国家/地区

第二种方法更容易实现(我会在 db 上有一个连接视图,序列化器只会将每个字段转换为 json),但我认为第一种更优雅

只是想知道这种情况是否有任何标准,以防万一没有更常见的方法......

ps:我并不是要开始讨论解决方案的“restfullness”,只是寻找一种聪明简单的方法来处理这种关系......

4

2 回答 2

6

在您的情况下,国家/地区足够小,可以考虑每次都嵌套它。但是,情况并非总是如此,并且我没有找到处理此问题的标准。

我已经使用自定义引用类型完成了此操作:

{
    "id": 79,
    "name": "Bordeaux",
    "country": {
        "ref": {
            "id": 76,
            "uri": "/country/76"
        }
    },
    "year": "2005" }

这里也有一些有用的想法。

于 2012-10-09T18:22:36.160 回答
-4

JSON 没有外键。那是与 RDBMS 相关的东西。在我看来,JSon 应该显示嵌套在自身中的所有内容。

MongoDB 强化了这种观点。在 MongoDB 中,您将所有内容存储为 JSon,并且“FK”包含在同一个文档中。如果你需要 FK,那么你就不需要 mongo,我认为你也不需要 JSon。

顺便说一句,如果您总是向国家展示,那么总是提出两个请求是没有意义的

于 2012-09-01T19:26:12.580 回答