我们有手机,桌面,Android和ios的列表和详情页面?
我们有两个apis- one列表和其他详细信息。所以一个api与其他api相关。
列出api看起来像: / API /书籍/?价格= 100-300
详细信息api看起来像: / API /书/ {BOOKID}
在响应中列出api会发回每个列表的详细信息api链接: 例如: 请求:
/api/books/?price=100-300
将有响应:
{
"books":[
{
"id": 1,
"price": 120,
"pages": 400,
"detailsUrl": "/api/book/{bookId}"
}
]
}
问题是,我应该向每个列表发送detailsUrl还是让所有客户端创建它?由于他们有bookId,他们可以创建它。
考虑到url params详细信息api url可能会在未来被添加,被认为是最佳实践,api可能是版本化以及广泛使用api的所有其他可能性吗?
答案 0 :(得分:1)
我把钱花在创建链接上。
There是一个完美的解释,为什么把id放不够
请勿在响应中仅包含实体的ID(例如12),因为 这样你就迫使客户把资源URI放在一起 他们自己。为了做到这一点,他们需要先行 知道有什么URI,你就失去了对它的控制权 服务器端的URI空间。
我建议阅读整个链接文本(已批准的答案),它非常详细,并且获得了很好的资源。正如作者所提到的,有一种流行的convention如何在资源之间建立联系--HAL。请考虑这一点,而不是detailsUrl
。
即使现在很明显指向资源的链接并且您决定单独使用id,但在一段时间之后,在其他资源中它将变得如此简单并且您将被迫指定完整的URL。然后你的API不会保持一致。经验告诉我,通过发送回全部链接,维护总是更容易和更好。