Eclipse+Jersey 开发rest web service 系列二
使用http方法操纵资源(get,put,post,delete):
准备工作:
安装advanced rest client 插件,使用的浏览器是chrome。
创建book实体类在package:sample.jersey.resources.entity
创建MokitoStore 模拟数据库操作在package:sample.jersey.resources.store
step1:get 操作.
package sample.jersey.resources;
import java.util.Collection;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import sample.jersey.resources.entity.Book;
import sample.jersey.resources.store.MokitoStore;
@Path("/books")
public class Books {
private static MokitoStore store=MokitoStore.getInstance();
@GET
@Produces({MediaType.APPLICATION_JSON})
public Collection<Book> getBooks(){
return store.getBooks();
}
@GET
@Path("{name}")
@Produces({MediaType.APPLICATION_JSON})
public Book getBook(@PathParam("name")String name){
return store.getBook(name);
}
@DELETE
@Path("{name}")
@Produces({MediaType.APPLICATION_JSON})
public void deleteBook(@PathParam("name")String name){
store.deleteBook(name);
}
@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
@Produces({MediaType.APPLICATION_JSON})
public void addBook(@FormParam("name")String name,@FormParam("price")double price){
store.addBook(name,price);
}
@PUT
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public void updateBook(Book book){
System.out.println(book.getName());
store.updateBook(book.getName(), book);
}
}
package sample.jersey.resources.store;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import sample.jersey.resources.entity.*;
public class MokitoStore {
private static MokitoStore store;
public static MokitoStore getInstance() {
if (store == null) {
return new MokitoStore();
}
return store;
}
private Map<String, Book> books = new ConcurrentHashMap<String, Book>();
private MokitoStore() {
Book b1=new Book("java",100);
Book b2=new Book("javascript",88);
Book b3=new Book("python",66);
books.put("java", b1);
books.put("javascript", b2);
books.put("python", b3);
}
public void addBook(String name,double price) {
Book book=new Book(name,price);
books.put(name, book);
}
public Collection<Book> getBooks() {
return books.values();
}
public Book getBook(String name) {
return books.get(name);
}
public void deleteBook(String name) {
books.remove(name);
}
public void updateBook(String name, Book book) {
books.put(name, book);
}
}
package sample.jersey.resources.entity;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Book {
private String name;
private double price;
public Book() {
}
public Book(String name,double price) {
this.name = name;
this.price=price;
}
public String getName() {
return name;
}
public void setName(String s) {
this.name = s;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
启动server,在rest client中输入url:http://localhost:8080/jerseytest/rest/books,方法选择get。
返回值为:{"book":[{"name":"javascript","price":"88.0"},{"name":"java","price":"100.0"},{"name":"python","price":"66.0"}]}
step2:post 操作,添加
点击post方法。会多出一个输入框。点击form输入name c,price 108.Content-Type选择APPLICATION_FORM_URLENCODED
点击send方法:status变为204,说明成功提交。
选择get方法,会显示我们提交的书籍,记录变为4条。
step3:put方法,更新
点击put,点击raw,输入以下json对象。
{
"name": "javascript",
"price": 98.0
}
step4:delete方法,
url:http://localhost:8080/jerseytest/rest/books/java 状态为204成功。
浙公网安备 33010602011771号