我正在使用Jersey开发REST应用程序并在我的服务中创建CRUD操作。
我的问题是如何将JSON绑定为方法中的对象。我无法使用JSON请求执行保存操作。
所以请为我提供开发CRUD应用程序的任何有用示例。
答案 0 :(得分:7)
Jersey JSON support是一组扩展模块,例如MOXy和Jackson。
通过MOXy的JSON绑定支持是自Jersey 2.0以来在Jersey应用程序中支持JSON绑定的默认方式。当JSON MOXy模块位于类路径上时,Jersey将自动发现模块并通过MOXy在您的应用程序中启用JSON绑定支持。
要将MOXy用作JSON提供程序,您需要将jersey-media-moxy
模块添加到pom.xml
文件中:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.22.1</version>
</dependency>
如果您不使用Maven,请确保在类路径中包含所有needed dependencies。
使用MOXy,您可以使用JAXB annotations来控制JSON的生成方式。
要将Jackson 2.x用作JSON提供程序,您需要将jersey-media-json-jackson
模块添加到pom.xml
文件中:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.22.1</version>
</dependency>
如果您不使用Maven,请确保在类路径中包含所有needed dependencies。
Jackson 2.x提供rich set of annotations来控制如何从POJO生成JSON。
定义将从/向JSON封送的POJO。以下面的类为例:
public class Book implements Serializable {
private Long id;
private String title;
private String description;
public Book {
}
// getters and setters ommited
}
根据您的JSON提供程序,您可以使用注释POJO来控制JSON的生成方式。
创建REST端点。要将数据用作JSON,只需使用@Consumes(MediaType.APPLICATION_JSON)
进行注释即可。要生成JSON,请使用@Produces(MediaType.APPLICATION_JSON)
注释它。
考虑以下类作为开始的示例:
@Path("/books")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class BookEndpoint {
@POST
public Response create(Book book) {
...
}
@GET
@Path("/id")
public Response read(@QueryParam("id") Long id) {
...
}
@PUT
@Path("/id")
public Response update(@QueryParam("id") Long id, Book book) {
...
}
@DELETE
@Path("/id")
public Response delete(@QueryParam("id") Long id) {
...
}
}
答案 1 :(得分:0)
在泽西岛使用function buildTable() {
var rows = document.getElementById("setRows").value;
var cols = document.getElementById("setCols").value;
var table = "<table>";
table += "<tbody>";
for (i=0;i<rows;i++) {
table += "<tr>";
for (j=0;j<cols;j++) {
table += "<td> </td>";
}
table += "</tr>";
}
table += "</tbody>";
table += "</table>";
document.getElementById("tableHolder").innerHTML=table;
}
和@Consumes
来自定义请求和响应。
示例:我们有一个Car对象。
@Produces
RESTful服务:
public class Car {
private Long id;
private String color;
private int maxSpeed;
private String manufacturer;
//...
//Getter and Setter
}
Yo可以使用任何REST客户端来测试它,例如,Postman。
答案 2 :(得分:0)