java - JAX-RS @POST 语法

标签 java 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 调用方面的帮助。

最佳答案

这里有两个问题。

首先,仅仅想以不同的方式表达参数不足以改变调用的语义。 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/

相关文章:

java - Hibernate 中 select Double 的问题

java - 如何通过 aws Java SDK 公开 S3 对象?

php - 使用php和Mysql按最大数量排序并确认

php:验证 POST 的最佳方式

Java EE - 如何使用自定义注释在方法上注入(inject)方法参数

java - 有没有使用 maven 运行可执行 jar 的好方法?

java - Android Studio中的多模块注解处理

javascript - 使用 PHP 和 Javascript/Ajax 绕过 CORS

java - JAX-RS POST bean 属性的默认值

JAX-RS 服务的 Javadoc