ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-集合的REST API设计自然分为子集合

2019-10-27 03:03:24  阅读:181  来源: 互联网

标签:node-js rest api-design javascript java


我有从我的客户端应用程序发送到处理它们的服务器的请求的集合.我用此请求创建新请求

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有