我在使用JAX-RS实现子资源时遇到了问题?

时间:2018-06-02 01:00:33

标签: java jax-rs tomcat8

我想使用JAX-RS实现Subresource。资源的URI就像这个http://localhost:8080/messenger/webapi/messages/1/comments。 我可以使用以下URI http://localhost:8080/messenger/webapi/messages/1来获取消息,但是当我尝试获取消息的注释时,我只会得到空的大括号。

两个资源类都在同一个包中。我理解,如果URI的映射不正确,我将收到404错误,但我得到200个带有空括号的状态代码。

    @Path("/messages")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class MessageResource {
    MessageService ms = new MessageService();


    @GET
    @Path("/{messageId}")
    public Message getMessage(@PathParam("messageId") long messageId) {
        return ms.getMessage(messageId);
    }

    @POST
    public Message addMessage(Message message) {
        return ms.addMessage(message);
    }

    @PUT
    @Path("/{messageId}")
    public Message updateMessage(@PathParam("messageId") long messageId, Message message) {
        message.setId(messageId);
        return ms.updateMessage(message);
    }

    @DELETE
    @Path("/{messageId}")
    public void deleteMessage(@PathParam("messageId") long messageId) {
        ms.removeMessage(messageId);
    }

    @GET
    @Path("/{messageId}/comments")
    public CommentResource getComments() {
        return new CommentResource();
    }

}

CommentResource类代码:

public class CommentResource {

private CommentService commentService = new CommentService();

@GET
public String test() {
    return "new sub resource";
}
}

1 个答案:

答案 0 :(得分:1)

我已经发现我在getComments()方法上使用了@GET注释,这导致了问题。我删除了它,现在代码工作正常。

@GET
@Path("/{messageId}/comments")
public CommentResource getComments() {
    return new CommentResource();
}