自定义状态行在RESTLET中不起作用

时间:2014-01-22 07:20:02

标签: restlet restlet-2.0

我正在编写REST应用程序,我正在使用RESTLET。我的服务有一个PUT方法。作为回复的一部分,我想返回用户自定义状态。

例如:

200 - 已成功创建并正在进行数据处理。

我尝试将状态设置如下。

@Put
public String storeItem(Representation entity) throws Exception {

// Some Processing

Status st = new Status(420,null,"REASON_PHRASE","Some description",null);           
setStatus(st);

return "Some String Representation"
}

当我尝试使用CURL访问URL时,我得到以下状态行。

curl -v  -X PUT "http://localhost:8080/extensible/data/process" 
* About to connect() to localhost port 8080 (#0)
*   Trying ::1... connected
* Connected to localhost (::1) port 8080 (#0)
> PUT /extensible/data/upload HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: localhost:8080
> Accept: */*
> 
< HTTP/1.1 420 420
< Content-Type: application/json; charset=UTF-8
< Date: Wed, 22 Jan 2014 06:56:24 GMT
< Accept-Ranges: bytes
< Server: Restlet-Framework/2.0.1
< Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept
< Content-Length: 21
< 
* Connection #0 to host localhost left intact
* Closing connection #0

上面的状态行是 HTTP / 1.1 420 420 ,但我希望状态行 HTTP / 1.1 420 REASON_PHRASE

我做错了什么? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我对设计的两分钱 我认为你需要一个很好的理由来使用自定义的http状态 我不认为是这种情况。
应用程序使用的REST API和使用API​​的应用程序知道此特定PUT是异步进程的一部分 有一个简单的200与新id作为数据或链接到编辑网址应该足够了。 如果决定这样做,客户端应用程序应通知用户。

  1. 如果你仍然认为自定义状态是正确的,你应该考虑使用20 *而不是420。