用于查找平均值的REST接口
假设我想创建一个REST接口来查找数字列表的平均值。假设每次提交一个数字。你会怎么做用于查找平均值的REST接口,rest,restapi,Rest,Restapi,假设我想创建一个REST接口来查找数字列表的平均值。假设每次提交一个数字。你会怎么做 发帖 如果这是第一个数字,将返回哈希 发帖 找到平均值 删除,因为我们不再需要它 这样做对吗?有什么建议吗?将数字列表视为资源更有意义。假设每个列表的资源URL是/list/{id},其中{id}是列表id的占位符。然后: POST/list创建一个新列表,服务器生成一个列表ID(或“哈希”),并在响应的位置标题中指定/list/{ID}URL POST/list/{id}在列表中添加一个数字 GET/lis
这样做对吗?有什么建议吗?将数字列表视为资源更有意义。假设每个列表的资源URL是
/list/{id}
,其中{id}
是列表id的占位符。然后:
POST/list
创建一个新列表,服务器生成一个列表ID(或“哈希”),并在响应的位置标题中指定/list/{ID}
URL
POST/list/{id}
在列表中添加一个数字GET/list/{id}/average
返回平均值DELETE/list/{id}
删除列表GET/list/{id}/average
的另一个替代方法是GET/list/{id}
将列表作为结构化数据返回,例如XML,其中包含作为生成属性的平均值
执行PUT
此操作以指示将生成哈希的新结构,即而不是基于传递的数字。只是一个“随机”散列。然后,每个后续的post都将包含id散列和发送的数字的返回结果散列。然后,当在上显示get时,您可以缓存结果
1. PUT /api/average/{number} //return id-hash
2. POST /api/average/{id-hash}/{number} // return average-hash
3. GET /api/average/{average-hash}
4. DELETE /api/average/{id-hash}
然后,您可以缓存平均哈希的get,即使您可能以不同的方式获得结果,或者不同的服务器获得相同的平均值。您所说的是将请求表示(数字列表)无状态转换为响应表示(单个数字) 让我们对您的资源进行分类:
- 无状态——请求是无状态的,但资源也是无状态的。它应该能够接受您的请求、处理请求并返回响应,而无需维护任何内部状态。下文将作进一步讨论
- 不太可能是可缓存的--我在这里假设您的数字列表从不相同/很少相同李>
- 幂等元——请求没有副作用。这是因为资源是无状态的
- 获取-获取资源的状态。由于您的资源没有状态,因此不适合您的情况。(幂等,可缓存)
- 删除-删除资源或清除其状态。也不适合你的情况。(不是幂等的,不可缓存)
- PUT-用于设置资源的状态(如果资源不存在,则创建资源)。(幂等,不可缓存)
- POST-用于处理可能修改或不修改资源状态的请求。可能会创建其他资源。(不保证幂等性——取决于资源是有状态的还是无状态的,不可缓存)
- 方法:邮寄
- 请求:数字列表的表示形式
- 响应:单个数字的表示(列表的平均值)
KISS(保持简单,愚蠢)。不能只返回哈希或ID,必须返回URI或URI模板加上字段值。唯一可以作为API一部分的URI是入口点,否则您的API就不是REST。您能提供更多的上下文吗?例如,您使用什么编程语言进行调度?编程语言的选择不一定会影响REST API的设计。这似乎是一个很好的答案,但是如果客户端忘记了{id},服务应该何时或如何确定何时删除{id}?我个人只会设置一个计时器任务,每天删除一次“旧”列表。除非列表非常庞大或频繁,否则您可能能够存储一年的价值。