首先:
引入工具類: 可以自行添加/修改
public class Constants {
public static final String TEST = "http://127.0.0.1:8080";
public static final String PRODUCT_MANAGEMENT_HOST = "http://127.0.0.1:8090";
}
引入HttpClient支援:
@Autowired
private RestTemplate restTemplate;
1.查詢資料 :getForEntity(url,Object.class)
參數一: 需要調用服務的位址(可以攜帶資料)
參數二:String.class表示我希望傳回的body類型是String
傳回值類型: ResponseEntity*<*T*>* 或 ResponseEntity*<*T*>*
@GetMapping("/findProductByPage")
public ResponseEntity<String> findProductByPage(Integer page, Integer rows,Product product){
HttpStatus statusCode = null;
try {
String url = Constants.PRODUCT_MANAGEMENT_HOST+ "/product/findProductByPage?page="+page+"&rows="+rows+"&product="+product;
ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);//跨伺服器通路
statusCode = entity.getStatusCode();//擷取狀态碼
String body = entity.getBody(); //擷取傳回資料
return new ResponseEntity<>(body,statusCode);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(statusCode);
}
}
2.儲存資料: postForEntity(url,pojo,Object.class)
參數一:同上
參數二:傳遞的資料
參數三:同上
*注意:該方法傳遞給跨伺服器是 方法參數上需要加上@RequestBody 否則無法接受到資料
@PostMapping("/saveProduct")
public ResponseEntity<String> saveProduct(Product product){
HttpStatus statusCode =null;
try {
JSONObject proJson = JSONObject.fromObject(product);
String prodct = proJson.toString();
String url = Constants.PRODUCT_MANAGEMENT_HOST+"/product/saveProduct";
ResponseEntity<String> entity = restTemplate.postForEntity(url, prodct, String.class);
String body = entity.getBody();
statusCode = entity.getStatusCode();
return new ResponseEntity<>(HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(statusCode);
}
}
//全部類:我使用的--->勿噴
@RestController
@RequestMapping("/product")
public class ProductController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/findProductByPage")
public ResponseEntity<String> findProductByPage(Integer page, Integer rows,Product product){
HttpStatus statusCode = null;
try {
String url = Constants.PRODUCT_MANAGEMENT_HOST+ "/product/findProductByPage?page="+page+"&rows="+rows+"&product="+product;
ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);
statusCode = entity.getStatusCode();//擷取狀态碼
String body = entity.getBody(); //擷取傳回資料
return new ResponseEntity<>(body,statusCode);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(statusCode);
}
}
@PostMapping("/saveProduct")
public ResponseEntity<String> saveProduct(Product product){
HttpStatus statusCode =null;
try {
JSONObject proJson = JSONObject.fromObject(product);
String prodct = proJson.toString();
String url = Constants.PRODUCT_MANAGEMENT_HOST+"/product/saveProduct";
ResponseEntity<String> entity = restTemplate.postForEntity(url, prodct, String.class);
String body = entity.getBody();
statusCode = entity.getStatusCode();
return new ResponseEntity<>(HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return new ResponseEntity<>(statusCode);
}
}
}