使用POSTMAN / Rest Client查询JSON REST服务

时间:2015-04-13 01:03:38

标签: json rest restlet postman

我有一个简单的RESTLET服务,它返回一个JSON表示,如下所示:

@Override
    @Post("json")
public Representation helloWorld() {
    Representation representation = new JacksonRepresentation<Hello>(new Hello("Hello World"));
    representation.setMediaType(MediaType.APPLICATION_JSON);
    representation.
    return representation;
}

当我使用cURL查询时,我得到了预期的响应:

{"greeting":"Hello World"}

但是,当我使用浏览器或POSTMAN或任何其他Web REST客户端时,我没有收到回复。我收到了来自POSTMAN的回复'无法得到任何回复。

POSTMAN请求的预览是:

POST /testingrestlet/hello HTTP/1.1
Host: 127.0.0.1:6000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 5141cd87-505c-e813-0045-3b7f4aa54144

我至少会期望像POSTMAN这样的REST客户端工作,或者我错过了什么?

任何帮助表示感谢。

此致

2 个答案:

答案 0 :(得分:3)

我认为您应该使用标头Accept进行内容协商(conneg)。您的请求应该是:

POST /testingrestlet/hello HTTP/1.1
Host: 127.0.0.1:6000
Content-Type: application/json
Accept: application/json
Cache-Control: no-cache
Postman-Token: 5141cd87-505c-e813-0045-3b7f4aa54144

事实上,由于您在注释中指定了扩展名“json”,因此Restlet期望此标头与JSON内容的一种可能的媒体类型一起发送。此提示用于选择处理方法...如果删除扩展名,则不应出现此问题,如下所述:

@Post
public Representation helloWorld() {
    Representation representation
        = new JacksonRepresentation<Hello>(new Hello("Hello World"));
    representation.setMediaType(MediaType.APPLICATION_JSON);
    (...)
    return representation;
}

希望它可以帮到你, 亨利

答案 1 :(得分:3)

在Thierry的评论的帮助下,该问题可以追溯到谷歌Chrome阻止对端口6000的请求,因为它认为它们不安全。该错误仅在Chrome调试模式下可见,其中报告了 ERR_UNSAFE_PORT 错误。更改为更高端口解决了问题!此错误的详细信息也可以在此处找到:https://superuser.com/questions/188006/how-to-fix-err-unsafe-port-error-on-chrome-when-browsing-to-unsafe-ports