休息惯例:api应该发送详细信息api url列表或客户硬编码吗?

时间:2017-01-23 11:48:53

标签: rest api asp.net-web-api

我们有手机,桌面,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的所有其他可能性吗?

1 个答案:

答案 0 :(得分:1)

我把钱花在创建链接上。

There是一个完美的解释,为什么把id放不够

  

请勿在响应中仅包含实体的ID(例如12),因为   这样你就迫使客户把资源URI放在一起   他们自己。为了做到这一点,他们需要先行   知道有什么URI,你就失去了对它的控制权   服务器端的URI空间。

我建议阅读整个链接文本(已批准的答案),它非常详细,并且获得了很好的资源。正如作者所提到的,有一种流行的convention如何在资源之间建立联系--HAL。请考虑这一点,而不是detailsUrl

即使现在很明显指向资源的链接并且您决定单独使用id,但在一段时间之后,在其他资源中它将变得如此简单并且您将被迫指定完整的URL。然后你的API不会保持一致。经验告诉我,通过发送回全部链接,维护总是更容易和更好。