2013-07-23 77 views
0

我正在嘗試在dropwizard內的資源上創建一個接受表示的動作,但允許它爲null,即。沒有來自客戶的發佈數據。如何創建接受可空表示的dropwizard(球衣)資源?

目前,從客戶端,我必須發佈「{}」,否則返回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... 
    } 
} 

如何表現這個任何想法?

+0

你可以嘗試刪除@Consumes註釋。哈克,但可能會工作。 – kashyap

回答

0

您可以使用可選的,用戶參數,如下所示:

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

Howerver爲415的主要原因是不提的Content-Type頭。在你的情況下,它應該是內容類型:應用程序/ json