Spring Boot - 외부 인터페이스 방문

Spring Boot - 외부 인터페이스 방문
Spring - boot 프로젝트 개발 에 있어 서 이 모듈 의 코드 는 외부 모듈 인터페이스 나 외부 url 링크 에 접근 해 야 하 는 수요 가 존재 합 니 다. 예 를 들 어 외부 맵 API 나 날씨 API 를 호출 해 야 합 니 다.
  • Spring Boot - 외부 인터페이스 방문
  • 방안 1: 원생 Http 요청
  • 방안 2: Feign 으로 소비
  • 방안 3: RestTemplate 방법 사용
  • Get 요청: getForEntity (Stringurl, Class response Type, Object... url Variables)
  • Get 요청 - getForEntity (URI url, Class response Type)
  • Get 요청 - getForObject
  • 우편 요청
  • 참고 문장

  • 가장 완전한 자바 백 엔 드 지식 체계https://www.pdai.tech, 매일 업데이트 중...
    프로젝트 1: 네 이 티 브 Http 요청 사용
    코드 에서 원생 http 요청 을 사용 합 니 다. 코드 는 다음 과 같 습 니 다.
    @RequestMapping("/doPostGetJson")
    public String doPostGetJson() throws ParseException {
       //            json     
       String jsonText = "{id:1}";
       JSONObject json = (JSONObject) JSONObject.parse(jsonText);
       JSONObject sr = this.doPost(json);
       System.out.println("    :" + sr);
       return sr.toString();
    }
    
    public static JSONObject doPost(JSONObject date) {
       HttpClient client = HttpClients.createDefault();
       //         
       String url = "http://192.168.1.101:8080/getJson";
       HttpPost post = new HttpPost(url);
       JSONObject jsonObject = null;
       try {
          StringEntity s = new StringEntity(date.toString());
          s.setContentEncoding("UTF-8");
          s.setContentType("application/json");
          post.setEntity(s);
          post.addHeader("content-type", "text/xml");
          HttpResponse res = client.execute(post);
          String response1 = EntityUtils.toString(res.getEntity());
          System.out.println(response1);
          if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
             String result = EntityUtils.toString(res.getEntity());//   json  :
             jsonObject = JSONObject.parseObject(result);
          }
       } catch (Exception e) {
          throw new RuntimeException(e);
       }
       return jsonObject;
    }

    방안 2: Feign 으로 소비
    1. maven 프로젝트 에 의존 도 를 추가 합 니 다.
    
        org.springframework.cloud
        spring-cloud-starter-feign
        1.2.2.RELEASE
    

    2. 인 터 페 이 스 를 작성 하여 service 층 에 배치 합 니 다.
    여기 decisionEngine. url 은 properties 에 설 치 된 ip 주소 와 포트 번호 decisionEngine. url = 입 니 다.http://10.2.1.148:3333/decision/person 인터페이스 이름
    @FeignClient(url = "${decisionEngine.url}",name="engine")
    public interface DecisionEngineService {
      @RequestMapping(value="/decision/person",method= RequestMethod.POST)
      public JSONObject getEngineMesasge(@RequestParam("uid") String uid,@RequestParam("productCode") String productCode);
    
    }

    3. 자바 의 시작 클래스 에 @ EnableFeignClient 를 추가 합 니 다.
    @EnableFeignClients //    
    @EnableDiscoveryClient
    @SpringBootApplication
    @EnableResourceServer
    public class Application   implements CommandLineRunner {
        private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
        @Autowired
        private AppMetricsExporter appMetricsExporter;
    
        @Autowired
        private AddMonitorUnitService addMonitorUnitService;
    
        public static void main(String[] args) {
            new SpringApplicationBuilder(Application.class).web(true).run(args);
        }    
    }

    4. 코드 에서 인 터 페 이 스 를 호출 하면 됩 니 다.
    @Autowired
    private DecisionEngineService decisionEngineService ;
    // ...
    decisionEngineService.getEngineMesasge("uid" ,  "productCode");

    방안 3: RestTemplate 방법 사용
    Spring - boot 개발 에서 RestTemplate 역시 대외 방문 인터페이스 API 를 제 공 했 는데 여기 서 Get 과 Post 방법의 사용 을 소개 한다.Get 요청 은 두 가지 방식 의 인터페이스 getForObject 와 getForEntity 를 제공 합 니 다. getForEntity 는 다음 과 같은 세 가지 방법 을 제공 합 니 다.
    Get 요청 -- getForEntity (Stringurl, Class responseType, Object... url Variables)
    이 방법 은 세 개의 인 자 를 제공 합 니 다. 그 중에서 url 은 요청 한 주소 이 고 response Type 은 body 에 응답 하 는 포장 유형 입 니 다. url Variables 는 url 의 매개 변수 로 연결 되 어 있 습 니 다. 이 방법의 참고 호출 은 다음 과 같 습 니 다.
    // http://USER-SERVICE/user?name={name)
    RestTemplate restTemplate=new RestTemplate();
    Map params=new HashMap<>();
    params.put("name","dada");  //
    ResponseEntity responseEntity=restTemplate.getForEntity("http://USERSERVICE/user?name={name}",String.class,params);

    Get 요청 - getForEntity (URI url, Class responseType)
    이 방법 은 URI 대상 을 사용 하여 이전 url 과 url Variables 인 자 를 대체 하여 방문 주소 와 인자 바 인 딩 을 지정 합 니 다.URI 는 JDK java. net 패키지 의 다음 클래스 로 통 일 된 자원 식별 자 (Uniform Resource Identifier) 인용 을 표시 합 니 다.다음 참조:
    RestTemplate restTemplate=new RestTemplate();
    UriComponents uriComponents=UriComponentsBuilder.fromUriString("http://USER-SERVICE/user?name={name}")
        .build()
        .expand("dodo")
        .encode();
    URI uri=uriComponents.toUri();
    ResponseEntity responseEntity=restTemplate.getForEntity(uri,String.class).getBody();

    Get 요청 -- getForObject
    getForObject 방법 은 getForEntity 에 대한 추가 패키지 로 이해 할 수 있 습 니 다. HttpMessage ConverterExtractor 를 통 해 HTTP 요청 응답 체 body 내용 을 대상 으로 변환 하여 포 장 된 대상 내용 을 직접 되 돌려 달라 고 요청 합 니 다.getForObject 방법 은 다음 과 같 습 니 다.
    getForObject(String url,Class responseType,Object...urlVariables)
    getForObject(String url,Class responseType,Map urlVariables)
    getForObject(URI url,Class responseType)

    포스트 요청
    Post 는 post ForEntity, post ForObject, post ForLocation 세 가지 방법 을 제공 해 달라 고 요청 했다.그 중에서 모든 방법 에는 세 가지 방법 이 존재 합 니 다. post ForEntity 방법 은 다음 과 같이 사용 합 니 다.
    RestTemplate restTemplate=new RestTemplate();
    User user=newUser("didi",30);
    ResponseEntity responseEntity=restTemplate.postForEntity("http://USER-SERVICE/user",user,String.class); //   body   user  ,      body   String
    String body=responseEntity.getBody();

    post ForEntity 에는 다음 과 같은 세 가지 방법의 과부하 가 존재 합 니 다.
    postForEntity(String url,Object request,Class responseType,Object... uriVariables)
    postForEntity(String url,Object request,Class responseType,Map uriVariables)
    postForEntity(URI url,Object request,Class responseType)

    post ForEntity 의 다른 매개 변 수 는 getForEntity 의 매개 변수 와 대체적으로 같 습 니 다. 여기 서 소개 하지 않 습 니 다.
    참고 문장
  • 참조https://blog.csdn.net/polo2044/article/details/85002282
  • 좋은 웹페이지 즐겨찾기