1. 程式人生 > >jersey get put delete post的用法及客戶端如何呼叫

jersey get put delete post的用法及客戶端如何呼叫

服務資源的程式碼如下:

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;
    }