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成功。

 

posted @ 2014-06-12 09:01  menglgcn  阅读(196)  评论(0)    收藏  举报