javascript-集合的REST API设计自然分为子集合
作者:互联网
我有从我的客户端应用程序发送到处理它们的服务器的请求的集合.我用此请求创建新请求
POST api/v1/requests
发送请求后,它将收到PENDING状态,经过评估后状态将变为RESOLVED.因此,我有收集请求,该请求分为2个子收集:request.pending和request.resolved.我需要一种方法来同时访问它们和缓存这些页面.
是使它们像这样的REST方法:
GET api/v1/requests/page/:page - returns pages of all requests collection
GET api/v1/requests/pending/page/:page - returns pages of pending requests collection
GET api/v1/requests/resolved/page/:page - returns pages of resolved requests collection
我对这种方法有点不舒服,因为主要资源是请求收集,并且我将在其上创建2个人工收集(或存储).尽管如此,我认为我不能仅仅使用这样的查询参数来实现这一点,因为查询参数不应该由缓存服务器通过REST协议进行缓存:
GET api/v1/requests/?page=:page - returns pages of all requests
解决方法:
这里有很多方法可以做您的网址,我敢肯定会有几种(强有力的)意见.
我的建议如下:
POST ../api/v1/request
v1 vs 1是我的个人喜好,我认为v1比1更具描述性.
对于资源名称,有很多关于复数还是单数的讨论.我的偏好是单数.
// redirects to a paginated url
GET ../api/v1/request -> ../api/v1/request?page=1&rpp=10
// your default page that return all types of requests ordered
// however you want, most likely reverse date created.
GET ../api/v1/request?page=1&rpp=10
// returns pending requests.
GET ../api/v1/request?page=1&rpp=10&status=pending
// returns resolved requests.
GET ../api/v1/request?page=1&rpp=10&status=resolved
这是我的想法…据我所知,您实际上是在尝试查询您的请求.
通常,更具体/嵌套的URL用于子关系.
例如,获取特定客户的所有地址:
GET ../api/v1/customer/1/address
以上所有网址都将是可缓存和可收藏的.
标签:node-js,rest,api-design,javascript,java 来源: https://codeday.me/bug/20191027/1941294.html