何时RPC/REST获取/发布?

何时RPC/REST获取/发布?,rest,post,get,zend-framework2,laminas-api-tools,Rest,Post,Get,Zend Framework2,Laminas Api Tools,我正在做我的第一个Apigility项目,文档与我们以前的开发人员做事情的方式不太一致,所以我对我应该如何做一些事情有点困惑(其中一些似乎也不太符合Apigility的“首选”做事情的方式) 例如,我试图设置一个端点,该端点接受5个必需的变量/值,其中第一个是“ID”,但指向第三方数据源,其中其他参数用于不同于ID的表(例如,2个参数用于第二个表,另外2个参数用于第三个表) 因此,我不能将端点设置为“/the/info[/:id]”,它需要传递所有5个参数,我只需将这些参数提交给第三方数据源,并

我正在做我的第一个Apigility项目,文档与我们以前的开发人员做事情的方式不太一致,所以我对我应该如何做一些事情有点困惑(其中一些似乎也不太符合Apigility的“首选”做事情的方式)

例如,我试图设置一个端点,该端点接受5个必需的变量/值,其中第一个是“ID”,但指向第三方数据源,其中其他参数用于不同于ID的表(例如,2个参数用于第二个表,另外2个参数用于第三个表)

因此,我不能将端点设置为“/the/info[/:id]”,它需要传递所有5个参数,我只需将这些参数提交给第三方数据源,并获取一些数据,这些数据是我为响应用户的前端UI而格式化的


我一直在玩,Apigility似乎对事情应该如何处理非常挑剔,所以我不知道这是否更适合REST或带有GET或POST请求的RPC。。。我不希望通过URL发送值(无论如何,这是通过https加密的AJAX调用发送的),但除非我不确定这应该用于哪些格式(无论是使用映射器还是资源服务)。

这里我给出一个简短的类比,我们应该在什么时候使用
RPC
REST

REST代表代表性状态转移主张web应用程序按照最初设想使用HTTP。查找应使用GET请求。PUT/PATCH、POST和DELETE请求应用于创建、变异和删除。RESTAPI资源通常是名词,这种REST用法与CRUD相同

例如:

我们想为
Book
对象创建API资源。这个资源是为
Book
CRUD设计的。因此,我们可以选择此方法(REST)来创建API资源。 这意味着api将像这样被访问

GET     http://example.com/api/v1/book
GET     http://example.com/api/v1/book/1
POST    http://example.com/api/v1/book
PATCH   http://example.com/api/v1/book/1
DELETE  http://example.com/api/v1/book/1
我们可以像这样在REST的url中使用额外的参数吗
https://example.com/api/v1/book/?param1=1¶m2=2

是的,我们可以!通常,我们使用附加参数进行
筛选
排序
获取
结果。但它是为另一个目的而开放的。请在
收藏\u查询\u白名单
子项中检查此文档。

RPC代表远程过程调用。在Apigility中,它意味着rpcweb服务。rpcapi资源通常是动词,就像函数名一样。我们可以为这个RPC自由使用HTTP方法(不像REST,HTTP方法描述操作)

例如:

我们想为
用户注册创建API资源。此资源用于为数据库创建新用户,但我们不需要对
user
对象执行CRUD操作。在这种情况下,选择RPC比选择REST更合适。因此,我们可以创建一个名为
register
的RPC资源,并使用
POST
HTTP方法

POST https://example.com/api/v1/register
我希望这个简短的类比可以帮助您理解REST和RPC之间的区别,以及何时使用它们