jersey get put delete post的用法及客戶端如何呼叫
阿新 • • 發佈:2019-02-09
服務資源的程式碼如下:
package com.example.annotation.method;
import java.awt.List;
import java.util.ArrayList;
import javax.ws.rs.BeanParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import com.example.domain.Book;
//新加的,自己寫的, get put delete post方法
@Path("BookResourceget")
public class BookResourceget {
//http://localhost:8080/simpleservice/webapi/BookResourceget/
@GET
@Produces(MediaType.APPLICATION_JSON)
public Book getWeight(){
Book book=new Book();
book.setBookId(Long.parseLong("110"));
book.setBookName("yu");
book.setPublisher("qq");
return book;
}
@GET
@Path("listbook")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces ({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Listbook listbook(){
Book book=new Book();
book.setBookId(Long.parseLong("110"));
book.setBookName("yu");
book.setPublisher("qq");
Book book2=new Book();
book2.setBookId(Long.parseLong("112"));
book2.setBookName("yu2");
book2.setPublisher("qq2");
ArrayList<Book> list=new ArrayList<Book>();
list.add(book);
list.add(book2);
Listbook booklist=new Listbook();
booklist.setListbook(list);
return booklist;
}
//網頁版本用這個才能接收到引數,正確解析,可以用ajax請求,也可以用瀏覽器測試工具
@PUT
@Produces(MediaType.APPLICATION_XML)
public Book newBook(@BeanParam Book book){
return book;
}
//如果用jersey客戶端的只能用這個,直接傳遞實體類和相應實體類
@PUT
@Path("Client")
@Produces(MediaType.APPLICATION_JSON)
public Book newBook1( Book book){
return book;
}
//網頁版本用這個才能接收到引數,正確解析,可以用ajax請求,也可以用瀏覽器測試工具
@POST
//引數說明 @Consumes 可以接收客戶端什麼樣的形式過來,
//網頁過來的post請求的內容形式一般是application/x-www-form-urlencoded,一般如果不確定註釋即可
//@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
//@Produces,返回給客戶端的的型別MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON
//如果請求段沒指定就會返回xml優先
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Book createBook(@BeanParam Book book){
return book;
}
//如果用jersey客戶端的只能用這個,直接傳遞實體類和相應實體類
//上面和下面程式碼的區別 @BeanParam Book book,Book book 注意傳入的實體類
@POST
@Path("Client")
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Produces(MediaType.APPLICATION_JSON)
public Book createBook2(Book book) {
return book;
}
@DELETE
public void delete(@QueryParam("bookId") final long bookId){
System.out.println(bookId);
}
}
見註釋說明
可以用ajax來測試,也可以用jersey客戶端來測試
測試端程式碼如下:
public String getbook() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget");
final String result = pathTarget.request().get(String.class);
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result;
}
public String delete() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget").queryParam("bookId", "110");
final Response result = pathTarget.request().delete();
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result.getStatus() + "";
}
public Book post() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget").path("Client");
Book book = new Book(100L, "TEST BOOK","你好");
final Book result = pathTarget.request().post(Entity.entity(book, MediaType.APPLICATION_XML), Book.class);
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result;
}
public Book put() {
final WebTarget webTarget = client.target(Jaxrs2Client.BASE_URI);
final WebTarget pathTarget = webTarget.path("BookResourceget").path("Client");
Book book = new Book(100L, "TEST BOOK","你好2");
final Book result = pathTarget.request().put(Entity.entity(book, MediaType.APPLICATION_XML), Book.class);
Jaxrs2Client.LOGGER.debug(pathTarget.getUri());
Jaxrs2Client.LOGGER.debug(result);
return result;
}