如何以RESTful方式实现资源"编辑"表单?

Sam*_*fee 10 rest

我们正在尝试为我们现在拥有的应用程序实现REST API.我们希望使用REST API公开各种资源的读/写功能.我们如何实现这个"形式"部分?我通过创建基本上用作方法调用并返回数据的RESTful URL来了解如何公开我们数据的"读取":

GET /restapi/myobject?param=object-id-maybe
Run Code Online (Sandbox Code Playgroud)

...返回表示某些数据结构的XML文档.精细.

但是,通常,在Web应用程序中,"编辑"将涉及两个请求:一个用于加载当前版本的资源并使用该数据填充表单,另一个用于将修改后的数据发回.

但我不知道如何使用REST映射到的HTTP方法做同样的事情.这是一个PUT,对吗?有人可以解释一下吗?

(附加考虑:UI主要使用AJAX完成)

- 更新:这肯定有帮助.但是,我对服务器端仍然有点困惑?显然,我不仅仅是处理文件.在服务器上,响应请求的代码应该过滤请求方法以确定如何处理它?那是读写之间的"转换"吗?

Ale*_*nos 11

您可以使用许多不同的替代方案.微格式wiki提供了一个很好的解决方案,RESTful JSON工作人员也参考了这个解决方案.尽可能接近标准,真的.

 Operate on a Record

GET /people/1
    return the first record 
DELETE /people/1
    destroy the first record 
POST /people/1?_method=DELETE
    alias for DELETE, to compensate for browser limitations 

GET /people/1/edit
    return a form to edit the first record 
PUT /people/1
    submit fields for updating the first record 
POST /people/1?_method=PUT
    alias for PUT, to compensate for browser limitations 
Run Code Online (Sandbox Code Playgroud)


Mar*_*ade 3

如果您通过纯 HTML 提交数据,则只能使用基于 POST 的表单。POST 请求发送到的 URI不应是正在修改的资源的 URI。您应该 POST 到每次添加新创建的资源的集合资源(在Location标头中使用新资源的 URI 和202状态代码),或者 POST 到更新程序资源,该更新程序资源使用在 Location 标头中提供的 URI 更新资源。请求的内容(或自定义标头)。

如果您使用的是 XmlHttpRequest 对象,则可以将该方法设置为 PUT 并将数据提交到资源的 URI。如果服务器为尚不存在的资源提供有效的 URI,则这也适用于空表单。第一个 PUT 将创建资源(返回202)。如果数据相同,后续 PUT 将不执行任何操作,或者修改现有资源(无论哪种情况,除非发生错误,否则都会返回200 )。