如何创建一个接受可空表示的dropwizard(jersey)资源?

时间:2013-07-23 09:59:53

标签: jersey dropwizard

我正在尝试在dropwizard中的资源上创建一个接受表示的动作,但允许它为null,即。没有来自客户的帖子数据。

目前,从客户端,我必须发布“{}”,否则返回HTTP 415,返回不支持的媒体类型。我假设这是因为我的客户端没有发送内容类型标题为content-length = 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...
    }
}

关于如何表示这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

您可以为参数使用Optional,如下所示:

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

强调415的主要原因是没有提及Content-Type标题。在您的情况下,它应该是Content-Type:application / json