2013-11-03 76 views
0

我以前沒有使用過@POST,我不確定語法和測試方法。這是我現在有:JAX-RS @POST語法

@GET 
@Path("classroomAssignmentId/{classroomAssignmentId}/classroomId/{classroomId}/assignmentName/{assignmentName}/assignmentDesc/{assignmentDesc}/assignmentDueDt/{assignmentDueDt}/assignmentDocument/{assignmentDocument}/assignmentStatusId/{assignmentStatusId}/updatedBy/{updatedBy}") 
@Produces(MediaType.APPLICATION_JSON) 


public ClassroomAssignment getCandidatesAsJson(@PathParam("classroomAssignmentId") int classroomAssignmentId 
         ,@PathParam("classroomId") int classroomId 
         ,@PathParam("assignmentName") String assignmentName 
         ,@PathParam("assignmentDesc") String assignmentDesc 
         ,@PathParam("assignmentDueDt") String assignmentDueDt 
         ,@PathParam("assignmentDocument") String assignmentDocument 
         ,@PathParam("assignmentStatusId") int assignmentStatusId 
         ,@PathParam("assignmentTypeId") int assignmentTypeId 
         ,@PathParam("updatedBy") String updatedBy) 

我想改變@GET@POST。需要語法幫助以及如何通過瀏覽器測試WS調用。

+0

這就是[tag:jax-rs],而不是JPA。您希望通過更改GET來完成什麼? –

+0

不想公開URL中的所有參數。 – user1810305

回答

2

這裏有兩個問題。

首先,僅僅想要以不同的方式表達參數不足以改變呼叫的語義。 POST與GET有着根本的區別,在REST中這兩種語義都非常明確。你不應該爲了方便而切換。

但第二,如果你發現理論很迂腐,只關心如何在實踐中完成這件事,你會使用這樣的:

@POST 
@Path("/classroom-assignment) 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public ClassroomAssignment getCandidatesAsJson(CandidateObject myObject) { 
... 
} 

然後你需要你的JAX-RS提供者(的RESTEasy, Spring MVC,Restlet等)執行JSON(通常是Jackson)的自動反序列化到CandidateObject POJO,該POJO將獲取器和setter映射到GET原始查詢字符串中的字段。

至少這是默認的序列化,這將是充分和最簡單的。

您還將擁有一個ClassroomAssignment POJO,並且您的JSON序列化程序(通常也是Jackson)會將該POJO轉換爲JSON。但最終,如果一個GET工作之前,你應該保持東西爲GET。只需重新考慮您的設計以及GET調用的方式。

+0

對此部分有意義的執行:
然後,您將需要JAX-RS提供者(RESTEasy,Spring MVC,Restlet等)執行JSON自動反序列化到CandidateObject POJO,這將使getter和setter映射到字段在你原來的GET查詢字符串中。
如果我的CandidateObject是ClassroomAssignment,我還需要做你說的嗎? – user1810305

+0

我不知道你的意思是「CandidateObject is ClassroomAssignment。」請求和響應都是JSON。但是您想要使用這些JSON值的Java表示形式。這意味着需要將JSON請求轉換爲「CandidateObject」,並且需要將「ClassroomAssignment」轉換爲JSON響應。 – Vidya

+0

我的問題是將這項工作: @POST @Path( 「/ classroomAssignment」) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) \t 公共ClassroomAssignment getCandidatesAsJson(\t ClassroomAssignment thisClassAssignment) – user1810305