RESTful操作、服务器端操作

RESTful操作、服务器端操作,rest,operations,Rest,Operations,好的,我有一个付款系统。让我们忽略它周围的一切,专注于支付本身 通过一群巫师,我建立了一个特定的支付 首先,我做一个 邮寄/付款 服务器返回 地点/付款/{id} 第一个向导页面: PUT/payment/{id} 服务器返回 201(已创建) 后续向导页: PUT/payment/{id}和 POST/payment/{id}/{subresource} 服务器返回 202(已接受)用于看跌期权和 201(已创建)用于子资源 最后一页(只有摘要和“你确定吗”) 我的问题是,我应该使用什么作为R

好的,我有一个付款系统。让我们忽略它周围的一切,专注于支付本身

通过一群巫师,我建立了一个特定的支付

首先,我做一个

邮寄/付款

服务器返回

地点/付款/{id}

第一个向导页面:

PUT/payment/{id}

服务器返回

201(已创建)

后续向导页:

PUT/payment/{id}和 POST/payment/{id}/{subresource}

服务器返回

202(已接受)用于看跌期权和 201(已创建)用于子资源

最后一页(只有摘要和“你确定吗”)

我的问题是,我应该使用什么作为REST端点

PUT/payment/{id}/进程

这显然是错误的,因为进程是一个动词,而不是一个资源

PUT/payment/{id}

这意味着客户机将要进行处理,而这是服务器不信任的

PUT/payment/{id}

随着状态的改变(类似于“处理”),让状态的改变被截获似乎是非常粗糙的,一点也不好的设计


有人有其他想法吗?

请先了解一下付款情况:

GET /payment/{id}
获取该表示并将其发布到处理资源

POST /payment/processqueue

Location标头可以包含指向显示处理状态的某些资源的链接。

您也可以使用术语“PaymentProcessor”,以便使用
POST/PaymentProcessor
发送付款。我要抗议的是,队列或处理者不是真正的资源,您仍然在向操作过帐。从功能上讲,后端的实现只是“PaymentService”上的一个方法,当所有信息和配置都在服务中时,没有理由创建“PaymentProcessor”对象。换句话说,我们制造幻影资源作为“资源”来满足宁静。这值得你这么困惑吗?我想我真的不明白你对“资源”的定义。对我来说,队列或处理器是一个事物——一个名词——因此有可能使其成为一种资源。在这种情况下,它是支付资源的容器,或者可能是支付资源URL的集合。我不认为这是任何意义上的“幻影”。我想象有一个URL,它向我显示一个潜在有用的待付款列表。请帮助我理解这种潜在混乱的根源。对不起,我花了这么长时间才回到这里。我没有看到stackoverflow给我发了一封电子邮件……我想我遇到的基本问题是,这是一个同步操作,而不是异步队列。用户应该立即获得操作是否成功的反馈。在旧样式中,可以调用无状态EJB或Spring.do/.action。它将完成工作,然后返回。在新的样式中,它将做同样的事情。唯一的区别是命名。我们确实希望显示/跟踪付款,但没有流程队列的概念。创建一个只是为了RESTful似乎有些过头了。我最终使用PUT/payment/{id}并更改了状态。在所有提出的解决方案中,它似乎是对事务性语言和REST的滥用最少的。我仍然对解决方案不满意。。。