REST和RPC之间的Web服务差异

我有一个Web服务接受JSON参数,并有方法的具体URL,例如:

http://IP:PORT/API/getAllData?p={JSON}

这绝对不是REST,因为它不是无状态的。 它需要考虑cookies并拥有自己的会话。

它是RPC吗? RPC和REST有什么区别?


通过查看您发布的内容,您无法在REST或RPC之间做出明确区分。

REST的一个限制是它必须是无状态的。 如果你有一个会话,那么你有状态,所以你不能打电话给你的服务RESTful。

你在URL中有一个动作的事实(即getAllData )是一个RPC指示。 在REST中,您交换表示,并且执行的操作由HTTP动词指定。 另外,在REST中,内容协商不会使用?p={JSON}参数执行。

不知道你的服务是否是RPC,但它不是RESTful。 您可以在线了解这些差异,下面是一篇让您开始使用的文章:揭开RPC和REST的神话。 你更清楚你的服务内部是什么,所以比较它的功能与RPC是什么,并得出你自己的结论。


考虑下面的例子,这些HTTP API将模拟订单放置在餐馆中。

  • RPC API根据“动词”进行思考,将餐厅功能暴露为接受参数的函数调用,并通过最合适的HTTP动词调用这些函数 - 查询的“获取”等等,但名称的动词纯属偶然,并且与实际功能无关,因为您每次都调用不同的URL 。 返回码是手动编码的,也是服务合同的一部分。
  • 相比之下, REST API将问题域中的各种实体建模为资源,并使用HTTP动词来表示针对这些资源的事务 - POST创建,PUT更新和GET读取。 所有这些在相同的URL上调用的动词提供了不同的功能。 通用的HTTP返回码用于传达请求的状态。
  • 正在下单:

  • RPC:http:// MyRestaurant:8080 / Orders / PlaceOrder(POST:{Tacos object})
  • REST:http:// MyRestaurant:8080 / Orders / Order?OrderNumber = asdf(POST:{Tacos object})
  • 检索订单:

  • RPC:http:// MyRestaurant:8080 / Orders / GetOrder?OrderNumber = asdf(GET)
  • REST:http:// MyRestaurant:8080 / Orders / Order?OrderNumber = asdf(GET)
  • 更新订单:

  • RPC:http:// MyRestaurant:8080 / Orders / UpdateOrder(PUT:{Pineapple Tacos object})
  • REST:http:// MyRestaurant:8080 / Orders / Order?OrderNumber = asdf(PUT:{Pineapple Tacos object})
  • 取自sites.google.com/site/wagingguerillasoftware/rest-series/what-is-restful-rest-vs-rpc的示例


    REST最好描述为与资源一起工作,其中RPC更多地涉及这些操作。

    REST代表具象状态传输。 这是组织独立系统之间交互的一种简单方法。 RESTful应用程序通常使用HTTP请求来发布数据(创建和/或更新),读取数据(例如,查询)以及删除数据。 因此,REST可以对所有四个CRUD(创建/读取/更新/删除)操作使用HTTP。

    RPC基本上用于跨不同模块进行通信以服务用户请求。 例如在OpenStack中,像启动虚拟机时新星,一瞥和中子一起工作。

    链接地址: http://www.djcxy.com/p/71469.html

    上一篇: Web service differences between REST and RPC

    下一篇: what is hypermedia , hypermedia controls, hypermedia formats