Я использую Джерси dropwizard и пытается обновить запись следующим образом:доступ JSON данные в запросе PUT - Джерси Dropwizard
@PUT
@Path("api/v1/tasks/{taskId}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
@UnitOfWork
public Task updateMyTask(@PathParam("taskId") long taskId, @QueryParam("description") String description) {
...
System.out.println(description); // Always `null`
...
}
Мои данные запроса:
{ "description": "dummy description" }
Моя проблема заключается в том, что я не удалось получить доступ к данным, поступающим в запрос PUT. Он всегда отображается как null
. Я уже пробовал это с @FormParam
, не повезло.
EDIT:
После Sam's ответа, я сделал предложенные изменения и получать следующие исключения:
@PUT
@Path("api/v1/tasks/{taskId}")
@Consumes(MediaType.APPLICATION_JSON)
@UnitOfWork
public Task updateTask(Task task, @PathParam("taskId") long taskId) {
...
System.out.println(task.getDescription());
...
}
Возвратившись ошибка:
{
"code": 400
"message": "Unable to process JSON"
}
Получаете ли вы какой-либо другой результат для сообщения об ошибке? Есть ли файл журнала в любом месте? Было бы хорошо знать, почему десериализация JSON терпит неудачу. – Sam
Не так много в журнале: '127.0.0.1 - - [27/Май/2016: 19: 26: 10 +0000]" PUT/api/v1/tasks/1 HTTP/1.1 "400 47" - "" - "92 '. Не знаете, как я могу видеть подробные журналы в приложении dropwizard. – RAJ
Имеет ли класс POJO конструктор no-args? – Sam