Web服务 – 用于数据处理和方法链接的REST API
如果问题的质量不好,我提前道歉.我仍然开始学习REST API的概念.我正在尝试实现可扩展的REST API进行数据处理.这是我到目前为止可以想到的.
考虑使用GET调用可以检索的一些数值数据: GET http://my.api/data/123/ 用户可以应用一系列算术运算,如加法和乘法.非RESTful的方法是: GET http://my.api/data/123?add=10&multiply=5 Assupmtions: > DB中的原始数据未更改.只有其更改的版本才会返回给用户. 目前有两种RESTful方式: 模型算术运算作为数据的子资源. 如果我们考虑添加和乘以数据as here的子资源.在这种情况下,我们可以使用: GET http://my.api/data/123/add/10/ 由于原始数据永远不会改变,这将是安全的和幂等的.但是,我们需要链接多个操作.我们可以做到吗 GET http://my.api/data/123/add/10/multiply/5/ 其中multiply正在创建一个add / 10 /的子资源,它本身是数据/ 123的子资源 优点: >无状态:服务器不保存关于修改数据的任何信息. 缺点: 链接:我不知道是否可以很容易的实现. 2.创建一个可编辑的数据对象: 在这种情况下,用户创建原始数据的可编辑版本: POST http://my.api/data/123/ 将返回 201 Created Location: http://my.api/data/123/edit/{uniqueid} 用户可以通过PATCH来编辑这个可编辑的数据 PATCH http://my.api/data/123/edit/{uniqueid} {add:10,multiply:5} 最后,获取编辑的数据 GET http://my.api/data/123/edit/{uniqueid} 优点: >清理URI. 缺点: >服务器必须保存已编辑数据的状态. RESTful实现数据处理有更清洁,更语义的方法吗? 编辑: 如果你想知道背后的真实世界是什么问题,我正在处理数字信号处理. 作为一个简单的例子,您可以考虑将图像过滤器应用于图像.在this example之后,RESTful Web服务可以做到: GET http://my.api/image/123/blur/5px/rotate/90deg/?size=small&format=png 解决方法
在您的问题中值得一试的几件事情.
基于REST的API是基于资源的 所以看看你的第一个例子,试图将转换属性链接到资源标识符后的URL路径. GET http://my.api/data/123/add/10/multiply/5/ ..不适合(以及复杂的动态实现,如你已经猜到的) 无国籍 REST中的无状态的想法围绕着一个包含足够信息来处理请求并提供结果的单个HTTP调用,而不返回到客户端以获取更多信息.在服务器上存储HTTP调用的结果不是状态,它是缓存. 现在,鉴于基于REST的API可能不是最适合您的使用,如果您仍然希望使用它,您可以选择: 1.使用具有常用URL操作的Querystring 您可以使用Querystring,但简化资源路径以接受单个URI上的所有转换.考虑到你的例子,不愿意存储变换的结果,这可能是你最好的选择. GET http://my.api/data/123/transform?add=10&multiply=5 2.非RESTful使用POST 您可以使用POST请求,并利用HTTP主体发送转换参数.如果您决定进行大量处理,这将确保您不会在查询字符串上空出空间,并且还会使您的通信更加简洁.如果POST返回图像数据,则这不被认为是RESTful的. 3.使用POST RESTful 最后,如果你决定要缓存的东西,你的POST实际上可以存储转换对象(请注意,REST不会规定如何存储,内存或数据库等),可以通过Id重新获取使用GET. 选项A
POST http://my.api/data/123 {add:10,multiply:5} 回报 201 Created Location: http://my.api/data/123/edit/{uniqueid} 然后获取编辑的数据 GET http://my.api/data/123/edit/{uniqueid} 选项B
POST http://my.api/data {original: 123,add:10,multiply:5} 回报 201 Created Location: http://my.api/data/{uniqueid} 然后获取编辑的数据 GET http://my.api/data/{uniqueid} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 小程序开发经验:多页面数据同步
- html – 使用justify-content的Safari问题:flex-end; alig
- GWT编译器错误:子类上缺少接口方法(PlayN HTML)
- 微信小程序 图片宽高自适应详解
- 微信小程序 后台https域名绑定和免费的https证书申请详解
- 提高一些开发小程序和云函数的效率
- 如何将HTML表单输入存储为JavaScript对象
- html – 使用XmlSlurper:如何在迭代GPathResult时选择子元
- Javascript获取img的宽度和高度,并将其放入另一个类的css中
- wolfram-mathematica – 使用Mathematica从HTML中提取信息