REST与RPC-*实际用途*差异
当REST已经很流行时,我开始编写web应用和分布式应用,所以我实际上从未使用过RPC 在寻找它们之间差异的简单解释时,我开始理解,但一些例子让我感到困惑。REST与RPC-*实际用途*差异,rest,rpc,Rest,Rpc,当REST已经很流行时,我开始编写web应用和分布式应用,所以我实际上从未使用过RPC 在寻找它们之间差异的简单解释时,我开始理解,但一些例子让我感到困惑。 我看到过这样的事情: GET /getLastUser GET /addTwo?num=5 { "result": 7 } 或者这个: POST /changeUserName 如果REST是用于资源的,而RPC是用于过程的,那么将RPC用于这样的事情不是一种糟糕的做法吗 如果我错了,请纠正我,但在我看来,RPC应该更纯粹地
我看到过这样的事情:
GET /getLastUser
GET /addTwo?num=5
{
"result": 7
}
或者这个:
POST /changeUserName
如果REST是用于资源的,而RPC是用于过程的,那么将RPC用于这样的事情不是一种糟糕的做法吗
如果我错了,请纠正我,但在我看来,RPC应该更纯粹地起作用。这意味着调用过程应始终:
- 为相同的参数返回相同的结果
- 不影响状态
GET /getLastUser
GET /addTwo?num=5
{
"result": 7
}
返回如下内容:
GET /getLastUser
GET /addTwo?num=5
{
"result": 7
}
对我来说似乎更符合逻辑(尽管这是一个非常简单的例子)
如果这个问题因为过于“基于意见”而被解决,我就知道我应该做任何我想做的事…RPC不应该是功能性的。调用同一过程两次并不能保证结果 这个问题可以用几种不同的方式来回答,而且非常深刻。我认为这可能是一个公平的总结
- 对于RPC,原语通常是函数名、参数和结果
- 对于REST,原语是“资源表示”
最后,可以说HTTP本身是一种类似RPC的协议。我认为可以在任何RPC服务之上构建RESTful服务。这很好地解释了这一点,REST不一定与RPC冲突?@user3134477,不一定,但在非常特定的条件下确实如此。当大多数人阅读REST时,他们会想到HTTP上REST的典型实现。对于大多数实际用途来说,它们是两件完全不同的事情,但是当你深入到理论上来时,剩下的部分可以在RPC协议的基础上完成。