如果我做了一件非常错误的事,请原谅我,我马上就会纠正。)
我正在创建一个REST服务,我需要创建资源的位置,用于测试目的和进一步开发。
到目前为止,我已经从rfc 2616了解到,我在HTTP POST之后得到的位置标题应该给我链接到我创建的资源。
14.30位置
Location response-header字段用于重定向收件人 到Request-URI以外的位置完成 请求或识别新资源。 201(创建) 响应,位置是创建的新资源的位置 根据要求。对于3xx响应,位置应该指示 服务器自动重定向到资源的首选URI。该 字段值由单个绝对URI组成。
Location = "Location" ":" absoluteURI
一个例子是:
Location: http://www.w3.org/pub/WWW/People.html
然而,当我在POST时创建一个新资源(例如使用curl,但我尝试了不同的客户端):
curl -X POST -H "Content-Type: application/xml" -d "<?xml version=\"1.0\" encoding=\"UTF-8\"?><participant><first-name>Severinus</first-name><email>severinus@gmail.com</email></participant>" -v http://localhost:8080/VCTAserverFirstTest/services/participants
这是我回头的标题:
上传已完全发送:133个字节中的133个 HTTP / 1.1 201已创建 服务器Apache-Coyote / 1.1未列入黑名单 服务器:Apache-Coyote / 1.1 地点:
http://localhost:8080/participants/1
内容长度:0 日期:星期六,2014年4月19日16:07:31 GMT连接#0以托管localhost保持原样
此处位置为http://localhost:8080/participants/1
,但资源实际上是在http://localhost:8080/VCTAserverFirstTest/services/participants/1
这不是我的预期。你需要服务器端代码还是有明显的答案?
由于 拉斯
编辑:对其他人来说不是一个好的答案,但它是通过使用resteasy框架解决的。