CXF系列之JAX-RS:CXF釋出與呼叫REST服務
阿新 • • 發佈:2019-01-08
package com.test.rest.client; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.MediaType; import org.codehaus.jackson.jaxrs.JacksonJsonProvider; import org.junit.Test; import com.test.rest.bean.Product; /** * 返回帶有泛型的資料 * @author Administrator * */ public class Client1 { String baseAddress = "http://localhost:8080/ws/rest"; JacksonJsonProvider jsonProvider = new JacksonJsonProvider(); @Test public void retrieveAll() { List<Product> productList = ClientBuilder.newClient().register(jsonProvider) .target(baseAddress).path("/products") .request(MediaType.APPLICATION_JSON).get(new GenericType<List<Product>>(){}); for (Product product : productList) { System.out.println(product); } } /** * 該方法測試引數查詢, * 如果測試表單引數,則需要提交表單 */ @Test public void retrieveByName_param(){ List<Product> productList = ClientBuilder.newClient() .register(jsonProvider) .target(baseAddress) .path("/products/name") .queryParam("name", "iphone63") .request(MediaType.APPLICATION_JSON) .get(new GenericType<List<Product>>(){}); for (Product product : productList) { System.out.println(product); } } /** * 新增資料 */ @Test public void create(){ Product product = new Product(); product.setName("iphone7"); product.setPrice(6000); Product resultProduct = ClientBuilder.newClient() .register(jsonProvider) .target(baseAddress) .path("/product") .request(MediaType.APPLICATION_JSON) .post(Entity.entity(product, MediaType.APPLICATION_JSON), new GenericType<Product>(){}); System.out.println(resultProduct); retrieveAll(); } /** * 修改資料1 */ @Test public void update(){ Product product = new Product(); product.setId(1L); product.setName("iphone6s"); product.setPrice(4000); Product resultTarget = ClientBuilder.newClient() .register(jsonProvider) .target(baseAddress) .path("/product") .request(MediaType.APPLICATION_JSON) .put(Entity.entity(product, MediaType.APPLICATION_JSON), new GenericType<Product>(){}); System.out.println(resultTarget); System.out.println("=================="); retrieveAll(); } /** * 修改資料2 */ @Test public void update2(){ Map<String,Object> fieldParam = new HashMap<>(); fieldParam.put("name", "ipad mini"); fieldParam.put("price", 1999); Product product = ClientBuilder.newClient() .register(jsonProvider) .target(baseAddress) .path("/product/2") .request(MediaType.APPLICATION_JSON) .put(Entity.entity(fieldParam, MediaType.APPLICATION_JSON), new GenericType<Product>(){}); System.out.println(product); System.out.println("==========================="); retrieveAll(); } /** * 路徑引數 * 刪除資料:根據id刪除 */ @Test public void delete(){ Product product = ClientBuilder.newClient() .register(jsonProvider) .target(baseAddress) .path("/product/1") .request(MediaType.APPLICATION_JSON) .delete(new GenericType<Product>(){}); System.out.println(product); System.out.println("==============="); retrieveAll(); } /** * 查詢引數 * 刪除資料:根據id刪除 */ @Test public void delete_param(){ Product product = ClientBuilder.newClient() .register(jsonProvider) .target(baseAddress) .path("/product") .queryParam("id", 2L) .request(MediaType.APPLICATION_JSON) .delete(new GenericType<Product>(){}); System.out.println(product); System.out.println("================="); retrieveAll(); } }
第三種:通用的WebClient客戶端