Jersey 是一个开源、功能强大的框架,用于为 Java 应用程序提供面向资源的 RESTful Web Services。它提供了一种简单的必要 API 和工具,用于快速开发并构建可伸缩、互操作的 RESTful Web Services。
以下是 Jersey 实现 RESTful 服务的完整攻略:
一、准备工作
- 安装 JDK 和 Eclipse
- 下载 Jersey 框架
- 创建一个新的 Maven 项目
二、配置项目依赖
在 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19.3</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.19.3</version>
</dependency>
三、编写 RESTful 服务
- 创建一个资源类
我们首先需要创建一个类,其中包含我们 RESTful Web 服务要提供的方法。我将创建一个简单的资源类,该类将充当我们的 RESTful 服务,以提供有关书籍的信息。
@Path("/book")
public class BookResource {
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Book getBookById(@PathParam("id") int id) {
return BookDao.getBookById(id);
}
@GET
@Path("/all")
@Produces(MediaType.APPLICATION_JSON)
public List<Book> getAllBooks() {
return BookDao.getAllBooks();
}
@POST
@Path("/add")
@Consumes(MediaType.APPLICATION_JSON)
public Response addBook(Book book) {
int bookId = BookDao.addBook(book);
URI uri = UriBuilder.
fromPath("http://localhost:8080/book/" + bookId).build();
return Response.created(uri).build();
}
}
在此代码中,我们创建了一个路径为“/book”的资源类,并添加了三种方法:一个获取指定 ID 书籍的方法、一个获取所有书籍的方法以及一个添加书籍的方法。在此示例中,我们使用了一些注解:
@Path
– 用于指定相对于应用程序的路径名称,该路径用于此类和其方法@GET, @POST
– 用于指定 HTTP 方法@Produces
– 指定响应类型@Consumes
– 指定请求类型-
@PathParam
– 用于将 URL 参数映射到 Java 方法参数 -
创建一个应用程序类
我们需要创建一个 Jersey 应用程序类,该类继承自 javax.ws.rs.core.Application
,以便使用它来将资源类映射到 URL 路径。
@ApplicationPath("/*")
public class BookApplication extends Application {
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(BookResource.class);
return classes;
}
}
在这个类中,我们创建了一个映射到路径“/*”的应用程序,并添加了我们刚刚创建的资源类。
- 创建 DAO 类
最后,我们需要创建一个 Data Access Object(DAO)类,用于模拟从数据库获取数据的过程。这是一个虚构的示例,其中我们使用一个 List 来存储书籍。
public class BookDao {
private static List<Book> books;
static {
books = new ArrayList<Book>();
books.add(new Book(1, "Head First Java", "Kathy Sierra and Bert Bates"));
books.add(new Book(2, "Java Concurrency in Practice", "Brian Goetz"));
books.add(new Book(3, "Effective Java", "Joshua Bloch"));
}
public static List<Book> getAllBooks() {
return books;
}
public static Book getBookById(int id) {
for (Book book : books) {
if (book.getId() == id) {
return book;
}
}
return null;
}
public static int addBook(Book book) {
int id = books.size() + 1;
book.setId(id);
books.add(book);
return id;
}
}
四、运行测试
完成以上步骤后,我们可以在 Eclipse 中启动项目并测试它。我们可以使用 Postman 或类似的工具向我们的 API 发送 GET 和 POST 请求,以从服务器中检索和添加书籍。
以下是两个示例:
- 获取指定 ID 书籍
使用以下 URL 连接发送 GET 请求,以获取 ID 为 1 的书籍:
http://localhost:8080/book/1
- 添加书籍
使用以下 URL 连接发送 POST 请求,以添加一本新书:
http://localhost:8080/book/add
在请求体中添加 JSON 数据,例如:
{
"title": "New Book",
"author": "New Author"
}
以上是使用 Jersey 框架实现 RESTful 服务的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jersey实现Restful服务(实例讲解) - Python技术站