У меня возникли проблемы при реализации субресурсов с использованием JAX-RS? - PullRequest
0 голосов
/ 02 июня 2018

Я хочу реализовать Subresource, используя JAX-RS.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 голосов
/ 02 июня 2018

Я выяснил, что я использую аннотацию @GET для метода getComments (), который вызывает проблему.Я удалил его, и теперь код работает нормально.

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