编程语言
首页 > 编程语言> > javascript-集合的REST API设计自然分为子集合

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