簡體   English   中英

如何在Spring Boot中使用RestTemplate將JSON作為輸入參數從一個微服務發送到另一個微服務

[英]How to send JSON as a Input parameter from one Microservice to another using RestTemplate in Spring Boot

我想將JSON作為input從微服務M1發送到微服務M2。

M1和M2都在不同的計算機上。 我是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM