我创建一个REST接口(并非大家都),我想更新资源。
所以,我认为使用PUT。
所以,我看这个 。
我带走的是,我把到这样的网址
/hc/api/v1/organizer/event/762d36c2-afc5-4c51-84eb-9b5b0ef2990c
与有效载荷,然后永久重定向到它可以获得资源的更新版本的URL。 在这种情况下,它碰巧是相同的URL,不同的动作。
所以我的问题是:
- 是我在更新使用PUT正确的资源的了解,是我使用PUT正确的认识。
- 当客户端获得一个重定向它做对重定向的URL相同的动作,因为它没有在原来的网址是什么? 如果它的“依赖”是有一个标准的大多数客户跟进?
我问第二个问题,因为邮递员,我JQuery的AJAX调用窒息。 JQuery的,因为净:: ERR_TOO_MANY_REDIRECTS的。 因此,它是重定向并再次尝试PUT,它会得到另一个重定向?
卷曲的打击了太多,但即使它说,如果它得到301就会切换到一个GET,它并没有真正似乎这样做,当我看到在输出(下图)。
当卷曲跟随重定向并请求不是一个普通的GET(例如POST或PUT),它将做一个GET如果HTTP响应是301,302,或303以下请求如果响应代码是任何其他的3xx代码,卷曲将重新发送使用相同的未修饰的方法下面的请求。
卷曲OUTPUT(编辑为简洁起见)(还要注意如何说,它会切换到GET [错误地从POST],但随后似乎做一个PUT反正):
curl -X PUT -H "Authorization: Basic AUTHZ==" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -H "Postman-Token: e80657f0-a8f5-af77-1d9d-d7bc22ed0b30" -d '{ JSONDATA"}' http://localhost:8080/hc/api/v1/organizer/event/762d36c2-afc5-4c51-84eb-9b5b0ef2990c -v -L
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> PUT /hc/api/v1/organizer/event/762d36c2-afc5-4c51-84eb-9b5b0ef2990c HTTP/1.1
> User-Agent: curl/7.37.1
> Host: localhost:8080
> Accept: */*
> Authorization: Basic AUTHZ==
> Content-Type: application/json
> Cache-Control: no-cache
> Postman-Token: e80657f0-a8f5-af77-1d9d-d7bc22ed0b30
> Content-Length: 203
>
* upload completely sent off: 203 out of 203 bytes
< HTTP/1.1 301 Moved Permanently
< Connection: keep-alive
< X-Powered-By: Undertow/1
< Set-Cookie: rememberMe=deleteMe; Path=/hc; Max-Age=0; Expires=Fri, 20-Feb-2015 03:53:28 GMT
< Set-Cookie: JSESSIONID=uwI3_41LAa7vlvapTsrZdw10.macbook-air; path=/hc
* Server WildFly/8 is not blacklisted
< Server: WildFly/8
< Location: /hc/api/v1/organizer/event/762d36c2-afc5-4c51-84eb-9b5b0ef2990c
< Content-Length: 0
< Date: Sat, 21 Feb 2015 03:53:28 GMT
<
* Connection #0 to host localhost left intact
* Issue another request to this URL: 'http://localhost:8080/hc/api/v1/organizer/event/762d36c2-afc5-4c51-84eb-9b5b0ef2990c'
* Switch from POST to GET
* Found bundle for host localhost: 0x7f9e4b415430
* Re-using existing connection! (#0) with host localhost
* Connected to localhost (127.0.0.1) port 8080 (#0)
> PUT /hc/api/v1/organizer/event/762d36c2-afc5-4c51-84eb-9b5b0ef2990c HTTP/1.1
> User-Agent: curl/7.37.1
> Host: localhost:8080
> Accept: */*
> Authorization: Basic dGVzdHVzZXIxOlBhc3N3b3JkMQ==
> Content-Type: application/json
> Cache-Control: no-cache
> Postman-Token: e80657f0-a8f5-af77-1d9d-d7bc22ed0b30
>
< HTTP/1.1 500 Internal Server Error
< Connection: keep-alive
< Set-Cookie: JSESSIONID=fDXxlH2xI-0-DEaC6Dj5EhD9.macbook-air; path=/hc
< Content-Type: text/html; charset=UTF-8
< Content-Length: 8593
< Date: Sat, 21 Feb 2015 03:53:28 GMT
<
......随之而来的失败......它实际上做了PUT
提前致谢。