Rest 当客户可以';是否不提出放置/删除请求?

Rest 当客户可以';是否不提出放置/删除请求?,rest,parameters,Rest,Parameters,我希望实现一个RESTful API,我想知道当浏览器客户端无法向服务器发出PUT/DELETE请求时,建议使用什么参数。(自) 它是否存在一个特定的参数名?(类似于POST请求中的request_method=DELETE,这应该向服务器表明客户端确实需要删除,但无法指示)?还是没有这样的规范 prototype.js使用的我的“_方法”。但这是一个标准吗? 例如,jQuery如何处理它 谢谢您的帮助。PUT/DELETE/GET方法通常由随请求发送的HTTP头决定。虽然您应该坚持使用您可以在

我希望实现一个RESTful API,我想知道当浏览器客户端无法向服务器发出PUT/DELETE请求时,建议使用什么参数。(自)

它是否存在一个特定的参数名?(类似于POST请求中的request_method=DELETE,这应该向服务器表明客户端确实需要删除,但无法指示)?还是没有这样的规范

prototype.js使用的我的“_方法”。但这是一个标准吗? 例如,jQuery如何处理它


谢谢您的帮助。

PUT/DELETE/GET方法通常由随请求发送的HTTP头决定。虽然您应该坚持使用您可以在服务中真正做您想做的事情的方法,但通过传入的调用,您有点打破了RESTfull服务的概念:)


这里有一篇关于REST的信息非常丰富的帖子,应该可以帮助你理清思路-

你本质上要问的是方法重载-虽然它不是100%RESTful,但如果客户端不支持PUT/DELETE方法,你可以使用这种方法。Richardson/Ruby的书中也提到了这种方法

在你的问题中,你自己创造了基本原则——与完全RESTful方法相比的区别在于,你引入了一个新的参数,该参数通过POST作为请求主体的一部分提交。此参数表示通过(重载)POST请求提交的预期方法(例如POST/PUT/DELETE)。这允许您克服客户端的HTTP方法限制,同时保持URI设计干净和RESTful(例如,不带动词)。但是,您仍然应该尽可能多地使用RESTful,即对只读请求使用GET(因此不会影响缓存等),对任何写请求使用重载post。至于如何命名包含真正HTTP方法的参数,我自己不知道有任何标准化的命名策略,因此使用Prototype.js使用的名称(或任何适合命名策略的名称)应该可以

一般来说,对于jQuery和XmlHttpRequest,它们应该支持PUT和DELETE方法。见:

  • (见项目符号3)
  • (请参见
    类型
请注意,jQuery文档警告说,PUT/DELETE的支持依赖于浏览器。我的理解是,在使用XHR时应该支持这些方法。。。但是,您应该先测试您的所有目标浏览器是否支持这些方法,然后再在POST重载和完整HTTP方法堆栈之间做出决定

默认情况下,jQuery提供对
.get()
.post()
方法的访问,这两种方法都构建在
.ajax()
之上。要通过jQuery执行PUT/DELETE调用,需要直接使用
.ajax()
方法,并在设置中的
类型中指定方法。然而,这是一个真正的PUT/DELETE请求,因为jQuery本身不提供任何处理方法重载的自动方法(因此您需要自己编写代码,以便它适合您的API设计)


如果您不使用XHR,并且需要依赖标准表单,那么我担心您将不得不使用方法重载,因为对PUT/DELETE方法作为有效表单操作值的支持已从中删除(您提到的SO问题中也提到了这一点)。

什么是“不能”?你的意思是客户端没有连接吗?我更新了我的问题,它更好吗?你提到的帖子有点漏掉了引导、获取、发布、放置和删除是浏览器的基本元素,所有4种方法都受支持,但可能是最过时/最晦涩的方法。所以我下面的信息仍然有效:)答案很好。你回答了我所有的第一部分,我正在寻找一个标准化的命名策略,但显然没有,所以我将使用Prototype.js使用的命名策略。谢谢你的回复!