2017-08-06 108 views
0

我有我不允許改變的API:POST請求不被觸發端點法

@POST 
@Path("/accomodation/{area}/{val1}/{val2}") 
Response createAccomEntry(@PathParam("area") String area, @PathParam("val1") String val1, @PathParam("val2") String val2); 

我只能改變實現:

@Override 
public Response createAccomEntry(@PathParam("area") String area, @PathParam("val1") String val1, @PathParam("val2") String val2) { 
    //can't debug the code here 
    return Response.status(Response.Status.OK).build(); 
} 

的創造者該API沒有指定任何MIME類型將被消耗等,我目前無法調試它。從我的REST客戶端我做一個POST請求http://localhost:8080/accomodation/area/val1/val2我設置「應用程序/ x-WWW的形式,進行了urlencoded」作爲Content-Type頭和有效載荷我給它想:

area=mock&val1=mock&val2=mock 

但我得到的是404.我做錯了什麼?

回答

0

這是因爲一旦你在實施添加任何 JAX-RS註解,它否定在相應的接口方法所有 JAX-RS註釋。這是規範的設計方式。因此,當您使用@PathParam時,僅此一項就會取消接口方法上的所有其他註釋,包括@POST@Path,這是需要向Jersey註冊該端點的方法。因此,只需刪除實施中的所有@PathParam,它就可以工作。

+0

呃,它真的! –

+0

但是很奇怪的是,一些已經實現的方法只是用@PathParams的方式工作... –

+0

如果你想在實現方法上添加註釋,那麼你需要添加它們的_all_。 –