![](/img/trans.png)
[英]spring boot microservice framework how to call another microservice from one microservice
[英]How to send JSON as a Input parameter from one Microservice to another using RestTemplate in Spring Boot
在兩個微服務上創建一個類,或對該類創建一個jar並添加到兩個微服務中,以便它們都可以訪問相同的數據。
可以說這堂課是
class TestData{
private String name;
private String id;
// getters and setters
}
現在您可以按照以下步驟將數據從M1發送到M2
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
TestData data = new TestData();
HttpEntity<?> entity = new HttpEntity<Object>(data,headers);
ResponseEntity<Object> responseEntity = restTemplate.exchange("url", HttpMethod.POST, entity, Object.class);
在Microservice M2中,您可以編寫一個控制器來獲取數據並按以下方式處理它
@RequestMapping(value="/url",method=RequestMethod.POST)
public Object do(@RequestBody TestData data){
// do something
return //something
}
假設您有MicroService1,它需要將JSONObject => JsonObject發送到另一個MicroService2,該MicroService2在不同計算機上但在同一網絡上。
發送方:
RestTemplate restTemplate = new RestTemplate();
String jsonString = restTemplate.postForObject("http://10.177.7.128:8080/user/insertJsonObject",jsonObject,String.class);
restTemplate.postForObject的語法為:
ResponseType var1 = restTemplate.postForObject("network ip Address:portnumber/path",JSONObject,ResponseType)
要了解URI,請轉到系統偏好設置>網絡
在接收方接收對象
@RequestMapping(value="/user/insertJsonObject", method=RequestMethod.POST)
public String updateProductSold(@RequestBody JSONObject jsonObject) {
...Body
...
...
return responseStatus;
這是示例代碼
public class Test {
public static void main(String[] args) {
String jsonString = "{\"id\" : \"123\",\"name\" : \"Tom\",\"class\" : {\"subject\" : \"Math\",\"teacher\" : \"Jack\"}}";
RestTemplate restTemplate = new RestTemplate();
String url = "http://192.1168.1.190:8080/test" // url for second service
System.out.println(responserEntityValue(jsonString,restTemplate,url,HttpMethod.POST,String.class));
}
public ResponseEntity<String> responserEntityValue(final String body, final RestTemplate restTemplate,
final String uRL, final HttpMethod requestMethod, final Class<String> stringClass) {
HttpHeaders headers = new HttpHeaders();
// Set all headers
headers.add(DatabaseConstants.CONTENT_TYPE, "application/json");
HttpEntity<String> request = new HttpEntity<>(body, headers);
return restTemplate.exchange(uRL, requestMethod, request, stringClass);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.