为什么REST PUT返回HTTP/1.x 405方法不允许


Why REST PUT returns HTTP/1.x 405 Method Not Allowed

我尝试了这个REST WShttp://phprestsql.sourceforge.net/

当我选择PUT谓词并复制粘贴到文本框中时

firstname=Jim
surname=Example
email=jim@example.org
company_uid=1

我确实收到了这个响应错误:

HTTP/1.x 405 Method Not Allowed
Date: Sun, 18 Aug 2013 16:50:06 GMT 
Via: 1.1 varnish 
Allow: GET, HEAD 
Server: Apache/2.2.15 (CentOS) 
Age: 0 
Vary: Host, Accept-Encoding 
Content-Type: text/html 
Cache-Control: max-age=172800 
X-Varnish: 244445725 
Connection: keep-alive 
Content-Length: 0 
Expires: Tue, 20 Aug 2013 16:50:06 GMT 

为什么我没有得到预期的

HTTP/1.x 201 Created

PUT要求您已经知道特定的资源ID-它旨在用(您提供的)新记录的内容替换当前记录的内容。如果您只是创建一个以前从未存在过的新记录,并且不想替换或覆盖其他任何内容,则应该使用POST

来自链接的网站:

有两种方法可以将一行添加到表中:

使用PUT方法,我们可以将资源写入特定的URL,但是要执行此操作,我们必须已经知道要插入的主键(因为主键是URL的一部分)。PUT方法应该用于创建或覆盖已知的命名资源。

使用POST方法,我们可以将行表示发送到表URL并将其附加到自身。POST方法应用于创建一个全新的资源作为集合的子资源(以及当您希望服务器为您组成URL时)。