0

我以前没有用过@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 调用的帮助。

4

1 回答 1

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)到CandidateObjectPOJO 的自动反序列化,这将使 getter 和 setter 映射到原始查询字符串中的字段你的 GET。

至少这是默认的序列化,这将是足够和最简单的。

您还将拥有一个ClassroomAssignmentPOJO,并且您的 JSON 序列化程序(通常是 Jackson)会将 POJO 转换为 JSON。

但最终,如果 GET 以前有效,您可能应该将其保留为 GET。只需重新考虑您的设计以及如何进行 GET 调用。

于 2013-11-03T21:39:14.817 回答