Restful 网络服务可以包含函数吗

Can Restful web service contain functions

我是网络服务新手。据我了解restful服务是一种实现分布式计算的方法。我知道 RMI 也是一种与许多其他技术(如 SOAP)一起实现这一目标的方法。现在我的问题是,我看到互联网上对 restful 网络服务如此推崇。但据我所知 Restful 只能包含对象的状态。它不能包含函数。是不是?我弄错了吗?怎么可能这么强,然后实现分布式计算。为什么大家都说RMI好,SOAP好?

Rest 的基础是资源——不要与 'objects' 混淆——和动词。 “资源”是任何具有 URI 的东西,“POST”动词明确表示用于提交要处理的数据,没有 定义此“处理”的内容" 包括:

The POST method requests that the target resource process the representation enclosed in the request according to the resource's own specific semantics

https://www.rfc-editor.org/rfc/rfc7231#section-4.3.3(重点是我的)

rfc 也非常清楚地指出,成功的 post 不一定会导致创建新资源:

If one or more resources has been created on the origin server as a result of successfully processing a POST request (...)

注意“如果”...

IOW 拥有一个目标是 运行 一些计算和 return 结果而不创建任何新资源的资源是完全合法的(实际上这应该使用 GET 请求 FWIW,cf search引擎等)或启动一些业务流程或任何可能以某种方式改变应用程序状态的东西。

关于“为什么大家都说RMI好还是SOAP好”,自己实现一个SOAP服务和SOAP客户端,你会发现很多 的间接费用意味着,与简单休息 API.

相比,这不一定会给您带来更多好处

你是对的。它不包含函数。只保存数据。

人们说 RMI/SOAP 关于 function/operation 的原因很容易管理,因为您不必担心 function/operation 的执行。 RMI 旨在调用远程机器中的函数。而 SOAP 消息具有明确的操作和确定功能的数据。虽然 RMI 和 SOAP 是不同的。

但是您可以使用 REST 轻松实现这种功能。 您只有 REST 数据。而数据可以代表function/operation身份,包括function/operation.的数据,你只要想一想。尽管 REST 的 tool/library 对 develop/maintain 分布式服务来说是巨大的。