【问题标题】:API design: list of elements or external ressources?API 设计:元素列表还是外部资源?
【发布时间】:2018-03-13 21:57:29
【问题描述】:

我目前正在为我的公司指定一个 API,符合 JSON API 规范。

使用GET host.com/members/{members_id} 检索members 资源时,我需要公开许多电话号码phones

例子:

{
"data": {
    "type":"members",
    "id": "1",
    "attribute": {
        "phones": [{
            "phone": "",
            "type": ""
        }]
    }  
},
"relationships": {
    "subscriptions": {
        "links": {
            "related": "host.com/members/id/subscriptions"
        }
    },
    "relations": {
        "links:" {
            "related": "host.com/members/id/relations"
        }
    }
},
"links": {
    "self": "host.com/members/id"
}
}

我不知道公开一个简单的字典列表是否相关,或者是否最好创建单独的资源可在/members/me/phones/{phones_id} 访问,并为链接到phonesmembers 创建一个新的relationships .

要在一个请求中检索members,然后我可以执行GET /members/{members_id}?include=phones

从我的开发人员的角度来看,访问单独的资源比管理和发布列表更容易,特别是对于手机(例如只删除一部手机),但我很高兴拥有您的(经常相关)外部建议。

感谢您的支持!

【问题讨论】:

  • 似乎您想使用的两种方式都行得通?两种方式似乎都符合要求,您可以选择自己想做的事情……我个人认为,您可以将所有数据放入独立的电话资源中,也许您想根据唯一性做出此决定(即,2个用户可以共享同一个手机资源吗?)

标签: json rest json-api


【解决方案1】:

你能修改你的 JSON 响应吗?因为它并不理想。 这个理想:

 GET host.com/members/{members_id}

返回:

{
    "id": "1",
    "phones": [{
            "phone": "",
            "type": ""
        }
      ]
}  

获取 host.com/members/{members_id}/phones

[           
    {
                "phone": "",
                "type": ""
            },
           {
                "phone": "",
                "type": ""
            }
]

【讨论】:

    猜你喜欢
    • 2015-10-04
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多