区分静态保存和提交 API

Differentiate Save and Submit in Rest API

关于使用 Rest API 将表单数据保存到 MongoDB 的问题。我有三种不同的情况。

  1. 保存并 return(第一次保存部分数据和 return id 以供将来 return)。
  2. 提交已保存的数据(第二次,完成表格并做最后提交,以便我可以触发其他工作流程。)
  3. 直接提交(第一次提交完整表格和returnid,开始工作流程)

对于上述情况,我想出了以下 API 资源

POST --> v1/applications   (This will save data and return id)
PUT --> v1/applications/{id} (This will retrieve data using id parameter and update that data)

我的困惑是如何区分 API,是仅保存调用还是最终提交调用,因为我必须在最终提交后开始工作流程。我可以使用下面的一些查询参数来指示提交或保存吗?

POST --> v1/applications?submit=true or false   (This will save data and return id)
PUT --> v1/applications/{id}?submit=true or false (This will retrieve data using id parameter and update that data)

或者我们有什么更好的方法来区分保存和提交api?

在RESTFul风格中,query parameter表示有一些与场景不同的东西,这意味着你不能为use action定义一个规则。在 URL 中记录特性比在真实文档中更好(没有人会仔细阅读它......) 我认为在您的情况下可能更好:

POST v1/applications/add/
PUT  v1/applications/{id}

顺便说一句,尽量不要一次就完美,好的服务需要检查和维护。

My confusion is how to differentiate both the API, whether it is only save or final submit call, because i have to start work flow after final submission. Can i use some query parameter like below to indicate submit or save?

我认为将该信号编码到请求的正文中会更常见,而不是试图搞砸 URL。

PUT /applications/12345

Version: 1
Status:  Draft

PUT /applications/12345

Version: 2
Status:  Final

请记住,URI 是资源(又名文档)的标识符。做有趣的工作是传递文档的副作用。参见 Jim Webber

如果您在 HTML 中执行所有操作,HTML 本身不支持 PUT,您可能会使用 POST,其中一种用于编辑,另一种用于完成,或者可能是设计用于处理这两种用例的单一表单。

One question, so for first time save or direct submission first time should use POST /applications. Am i right?

这是一个常见的选择,但不是必需的。真正的区别在于——我们是在目标 URL 上创建新资源 吗?

如果是,那么PUTPOSTPATCH都是可能的。

如果不是——如果我们将请求发送到一个服务器资源,希望创建的资源在其他地方,那么 POST 是合适的选择。