调用REST服务方法的正确方法(使用多个参数)

调用REST服务方法的正确方法(使用多个参数),rest,language-agnostic,Rest,Language Agnostic,因此,我在后端有一个方法,我想从客户端(Android和web,虽然不是很重要)调用它。该方法接受两个“复杂”参数——两个对象 简单地声明一个URL(例如,域/方法),客户端将对象发布到该URL,并且在后端有一个控制器映射到该URL并调用该方法,可以吗?如果是,我应该如何发送带有两个对象的POST请求?当您谈论域/方法时,它听起来更像是一个RPC服务,而不是REST服务。RPC(远程过程调用)用于基于方法的服务,而REST用于基于资源的服务 在任何情况下,创建REST API时,都应使用如下UR

因此,我在后端有一个方法,我想从客户端(Android和web,虽然不是很重要)调用它。该方法接受两个“复杂”参数——两个对象


简单地声明一个URL(例如,
域/方法
),客户端将对象发布到该URL,并且在后端有一个控制器映射到该URL并调用该方法,可以吗?如果是,我应该如何发送带有两个对象的POST请求?

当您谈论域/方法时,它听起来更像是一个RPC服务,而不是REST服务。RPC(远程过程调用)用于基于方法的服务,而REST用于基于资源的服务

在任何情况下,创建REST API时,都应使用如下URL:

example.com/resource/ example.com/resource

需要创建新资源时,请使用example.com/resource上的POST方法。您可以将对象包括在POST请求的有效负载中。服务器应该验证和处理这些对象,最终生成一个新的资源。根据您的REST体系结构,服务器可以在对post的响应中返回资源或资源的URI


验证和处理对象以及生成资源的方式取决于应用程序。通常,您使用URI和HTTP方法(GET、POST、PUT或DELETE是标准的)来路由到处理请求的代码。

Oh:/所以在执行REST时应该是所有资源?:/如果客户端上的按钮只需要增加某些内容(不创建新资源),该怎么办?假设需要增加的项是现有资源的属性,您可以使用PUT或PATCH对其进行更新。然后,我要做的是向
example.com/resourceToUpdate
发送一个带有空正文(?)的PUT/PATCH请求,在服务器上,有一些代码会触发此URL和PUT/PATCH请求,从而增加属性?如果需要将增加的属性与请求分离,这是一个合理的解决方案。由于我们正在进入一些基本细节,对更广泛的用例的解释可能是有用的。在介绍用例之前,非常感谢您提供的答案和迄今为止的耐心:)好的,有一个东西一次只能由一个用户使用。用户提前预订(1),他们可以看到有多少其他用户正在等待使用该设备。他们也可以放弃等待/取消预订(2)。现在,在(1)和(2)中将使用该递增/更新,即,取消预订时唯一需要做的事情是减少等待该事情的用户数量