Ответ Jax-RS приходит в формате HTML / текст вместо JSON - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть внешнее приложение реакции, где я делаю запрос к бэкэнд-серверу REST Jax-RS.

Вот отправляемый запрос

  deletePost = (post) =>{
return deleter(config.restUrl + `posts/${post}`)
 }

Здесь я получаю стандартный URL-адрес для моего бэкэнда с функцией «delete», которая является просто стандартизированным методом удаления извлечения (который также имеетработал и с другими объектами).

Вот мой ресурс Jax-RS:

@DELETE
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
@Path("/{id: [0-9]+}")
public Response deletePost(@HeaderParam("authorization") String token, @PathParam("id") Integer id) throws ResourceNotFoundException, AuthenticationException
{
    AuthenticationContext authenticationContext = authenticationFacade.authenticateBearerHeader(token);
    Post                  post                  = postFacade.delete(authenticationContext, id);
    return Response.ok(gson.toJson(PostDTO.basic(post))).build();
}

Проблема в том, что он дает мне ошибку, говоря, что форма HTML / text:

MessageBodyWriter not found for media type\u003dtext/html, type\u003dclass com.group3.sem3exam.rest.dto.PostDTO, genericType\u003dclass com.group3.sem3exam.rest.dto.PostDTO

Поскольку это подразумевает, что это ошибка PostDTO, я обратился к базовому методу, который преобразует сущность в объект передачи данных, который будет отправлен обратно на сторону клиента.

   public static PostDTO basic(Post post)
{
    return new PostDTO(
            post.getId(),
            post.getContents(),
            post.getCreatedAt(),
            null,
            ImageDTO.list(post.getImages(), ImageDTO::withoutUser)
    );
    }

Здесь он просто вызывает метод, который возвращает новый экземпляр объекта.

Я не видел эту ошибку раньше, и я не уверен, как с ней справиться?

1 Ответ

0 голосов
/ 05 декабря 2018

Попробуйте

return Response.status(Status.OK).entity(new Gson().toJson(PostDTO.basic(post))).build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...