PHP 中的 REST 与 RPC [已关闭]

2022-08-30 12:24:50

我正在构建自己的Ajax网站,我正在考虑在REST和RPC之间。

如果我的服务器支持Servlets,我会坚持不懈地安装并结束问题,但我的服务器不支持Servlets。

RPC更易于编码(IMO),并且可以很容易地用PHP编写。我所需要的只是一个数据库查询执行器。我正在使用Dojo Toolkit和JSON。

为什么我应该选择 REST 而不是 RPC 或 RPC 而不是 REST?


答案 1

理解它的最佳方式是阅读Roy T. Fielding关于它的论文,或者他博客上的相关文章,其中他讨论了纯REST和简单RPC架构之间的区别。

另一件需要注意的事情是,维基百科上关于REST的文章状况令人沮丧,而REST的“发明者”菲尔丁本人则认为这篇文章是不准确的。

人们在使用REST时错过的最大事情是可发现性 - 资源应该在其超文本中包含其他相关资源的URI,而不是依赖于URI命名约定,这些约定是带外和非标准化的。

流行的RPC实现(如SOAP或XML-RPC)的一个大问题是,它们在自己的专有架构下使用HTTP,而不是利用HTTP的所有不同属性,如PUT,GET,DELETE等。因此,这也不适合传统的Web堆栈 - 例如,在不知道RPC调用内容的含义的情况下,中间的缓存服务器不起作用。

这是对REST和RPC的不完整介绍,但我认为我已经强调了一些经常错过的要点。要小心,因为REST上有很多错误的信息。

也就是说,REST并不适合一切。它是一种架构,因此实现方式相当灵活。但是,如果主要作为资源访问事物没有意义,那么REST可能不适合,或者它可能只适合应用程序的一部分,这很好。


答案 2

嗯......简单来说,两者都是非常抽象的模型...如此抽象,它们自然无处不在...

REST是使用全局标识符(HTTP情况下的URI)对资源进行寻址的想法,这些标识符以CRUD方式访问(在HTTP的情况下使用POSTGET,PUT和DELETE ...好吧,至少这是这个想法)...

RPC 是您在另一台计算机上调用过程,传入一些参数并获取返回值的想法...

维基百科上有一个很好的简短比较

毅力创造了一种服务,允许两者(诚然,以一种非常优雅的方式)......它是RESTful(尽管它不仅使用HTTP功能来实现这一点),公开了一个RPC接口...

最后,您应该查看应用程序需要执行的操作...与大多数人一样,您可能会最终获得一个RPC API(无论是基于XML还是JSON或其他),其中包括一个用于部分RESTful子系统的传输层......这是因为拥有RESTfulnes意味着灵活性...如果客户端可以或多或少地自由遍历服务器上的数据(通过一组简单的CRUD方法),它不依赖于通过API公开的有限(特定于问题的)方法集,并且您可以向客户端转移逻辑...


推荐