REST vs JSON
我试图在REST和JSON-RPC之间选择开发一个Web应用程序的API。 哪一个更容易用于API客户端?
2015年更新:我发现REST更易于开发和使用在Web / HTTP上提供的API,因为API可以利用客户端和服务器都了解的现有成熟的HTTP协议。 例如响应代码,标题,查询,帖子主体,缓存和许多其他功能都可以被API使用,无需任何额外的努力或设置。
RPC的根本问题是耦合。 RPC客户端以多种方式与服务实现紧密耦合,并且很难在不中断客户端的情况下更改服务实现:
另一方面,在REST风格中,通过在表示中包含控制信息(HTTP头+表示形式)来引导客户端非常容易。 例如:
REST方面有更多的差异和优势。
我已经详细探讨了这个问题,并决定纯REST的方式太局限了,RPC是最好的,即使我的大多数应用程序都是CRUD应用程序。 如果你坚持使用REST,你最终会困扰你的脑袋,想知道如何为你的特殊目的轻松地将另一种需要的方法添加到你的API中。 在很多情况下,使用REST的唯一方法是为其创建另一个控制器,这可能会使程序过度复杂化。
如果你决定使用RPC,唯一的区别就是你明确地将动词指定为URI的一部分,这是清晰的,一致的,更少的错误,并且确实没有问题。 特别是如果您创建的应用超出了简单的CRUD范围,则RPC是唯一可行的方法。 我对RESTful纯粹主义者有另一个问题:HTTP POST,GET,PUT,DELETE在HTTP中已经被REST颠覆为意义上的明确含义,仅仅因为它们适合大部分时间 - 但并非全部时间。
在编程方面,我很久以前就发现试图用一件事来表示两件事情会在某个时候出现并咬你。 我喜欢使用POST来处理所有操作,因为它提供了根据您的方法需要发送和接收数据的自由。 你不能将整个世界融入CRUD。
首先,HTTP-REST是“代表性状态转移”体系结构。 这意味着很多有趣的事情:
其次,HTTP-REST完全符合HTTP(请参阅上一部分中的“安全”和“幂等”),因此您将能够重复使用HTTP库(现有的每种现有语言)和HTTP反向代理,这将为您提供使用零代码行来实现高级功能(缓存,认证,压缩,重定向,重写,日志记录等)。
最后但并非最不重要的一点,根据HTTP 1.1的设计者(以及REST的发明人),使用HTTP作为RPC协议是一个巨大的错误:http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation。 HTM#sec_6_5_2
链接地址: http://www.djcxy.com/p/7967.html上一篇: REST vs JSON
下一篇: REST API Best practice: How to accept list of parameter values as input