我正在开发一个基于Web的应用程序,它使用基于HTTP的JSON API在服务器和客户端之间进行通信.目标是使用相同的在线数据通过此Web服务共享,可以使用不同的目标(在线Web客户端,脱机桌面客户端或第三方创建)开发多个客户端.
现在,客户端和服务器之间的通信仅通过一个运行良好的系统通过POST发送.我阅读了很多关于REST的信息,并使用PUT,GET,POST和DELETE对HTTP进行RESTful.我可以将我的API分成这些不同的类别,但这意味着更多的代码和API的一些更改.
我的问题是:基于HTTP的API对RESTful有多重要?这是推荐,选择还是近乎必要的?
提前致谢.
作为一个顽固的RESTafarian,我会说完全使用HTTP(有问题的REST协议).为什么?好吧,我将向你展示我昨天和我的一位好朋友的电子邮件交换中的两个片段,他们非常聪明(曾经是IT教授,仍然是讲课,无论走到哪里都会踢屁股);
昨天我通过了我的mappodrhom
应用程序的一个重要里程碑:我现在可以
在工作池中启动长时间运行的后台计算.完成后,工作人员将结果直接发送回REST资源.这会触发更多后台处理,所有这些都由依赖图控制.有趣的是,这个RESTful后台
实际上独立于我的特定应用程序.但我现在
太累了,无法完全掌握后果:-)
问题的后果是巨大的(它是一个REST框架,包含许多小堆栈和事件,服务和应用程序,都有自己可发现的URI,都具有相同的统一接口),并且在可扩展性和可扩展性方面,它简直无与伦比它的简洁.如果你的应用程序是一个永远不会去旅行或遇到热小鸡的小东西,是的,也许你不需要它.但是,我说了同样的话,突然发现自己乘坐的火车去了巴黎,带着一个可爱的女孩,这是俄罗斯人的秘密间谍,好吧,有一件事导致另一件......
这是我的回答,有一些我自己的经历;
我觉得这听起来(原谅我的法语)非常棒!我正在经历与我自己的REST东西相似的事情,因为中间层是如此薄和透明,我可以按照我需要的方式扩展事物而不用担心太多的基础结构.这是一种自由,这样一种极其酷的东西,我的大脑就会爆炸,并且为什么更多的人没有这样做,这是一种令人担忧的好奇心?
简而言之,只做中途的 REST 就像没有真正做到这一点.你只是将你的东西转移到不同的管道上,错过了简化的API到状态机,语义和实现在核心的解耦,使用构建网络的原则(因此我会说你'我们背后有相当成熟的想法),统一的界面,并将URI作为建模的一部分.
我知道很流行的说你可以挑选,这些都是选择.不是.REST只是通过完全使用它才有意义,但是为了说服你实际上进一步伸展你的大脑并做一些聪明的事情,我只能敢于你切断FUD(这完全是关于RPC,只需要GET和POST,你不需要它,相当于JSON,SOAP和其他类似的东西,等等,并且更聪明地了解如何创建应用程序.是的,我敢都是你!
除非你打算利用超媒体,否则我不打算尝试遵守REST约束.超媒体是这个难题的一部分,它使系统大于其各部分的总和.
您可以自由选择要在架构中考虑哪些REST约束,只需注意,为了能够调用最终结果RESTful,唯一可选的约束是"代码下载".