gpt4 book ai didi

java - JAX-RS @POST 语法

转载 作者:行者123 更新时间:2023-12-02 06:34:52 25 4
gpt4 key购买 nike

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

最佳答案

这里有两个问题。

首先,仅仅想以不同的方式表达参数不足以改变调用的语义。 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 将具有 getters和 setter 映射到 GET 的原始查询字符串中的字段。

至少这是默认的序列化,这已经足够并且最简单了。

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

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

关于java - JAX-RS @POST 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com