0

我正在尝试在 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...
    }
}

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

4

1 回答 1

0

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

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

然而,415 的主要原因是没有提到 Content-Type 标头。在您的情况下,它应该是 Content-Type : application/json

于 2013-08-02T21:11:39.967 回答