Как я могу создать ресурс dropwizard (трикотаж), который принимает представление, допускающее значение NULL?

Я пытаюсь создать действие над ресурсом в dropwizard, которое принимает представление, но позволяет ему быть нулевым, т.е. нет почтовых данных от клиента.

В настоящее время от клиента я должен опубликовать «{}», иначе возвращается HTTP 415, неподдерживаемый тип носителя. Я предполагаю, что это связано с тем, что мой клиент не отправляет заголовок типа содержимого, поскольку длина содержимого = 0.

Я попытался определить ресурсы следующим образом, но получил «Конфликт типов мультимедиа» из трикотажа, поскольку оба метода используют один и тот же путь, и трикотаж не может различать их:

@Path("/interview")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Log
class InterviewResource {

    @POST
    @Timed
    Interview advanceNewInterview() {

        // some processing...
    }

    @POST
    @Timed
    Enquiry advanceNewInterview(@Valid AdvanceInterviewRepresentation advanceInterview) {

        // some processing...
    }
}

Любые идеи о том, как это представить?


person Chris Prior    schedule 23.07.2013    source источник
comment
Можете ли вы попробовать удалить аннотацию @Consumes. Хакерский, но может работать.   -  person kashyap    schedule 29.07.2013


Ответы (1)


Вы можете использовать необязательный параметр для своего параметра, как показано ниже:

@POST
@Timed 
Enquiry advanceNewInterview(@Valid Optional<AdvanceInterviewRepresentation> advanceInterview)
{
  if (advanceInterview.isPresent())
  { 
      // some processing...
  } 
}

Однако основной причиной ошибки 415 является отсутствие упоминания заголовка Content-Type. В вашем случае это должен быть Content-Type : application/json

person happy to help    schedule 02.08.2013