봄 부팅 마이크로 RestTemplate 호출 다른 서비스를 사용하여

RestTemplate에 위치한 spring-web모듈은 org.springframework.web.client패키지에서, 봄 동기화 클라이언트 HTTP 액세스 핵심 클래스, 그것은 단순화하고 상호 작용하는 HTTP 서버 측에 평안한 원칙의 사용을 강제합니다. 그것은 HTTP 연결 URL을 제공하기 위해 별도의 응용 프로그램 코드 (몇 가지 템플릿 변수를 취할 수있다) 및 추출 결과를 처리합니다.

참고 : 기본적으로 RestTemplete는 HTTP 연결을 설정하기 위해 표준 JDK 도구에 의존, 당신은 할 수 setRequestFactory아파치 HttpComponent, 인 Netty와 OkHttp로, 그를 대체 할 다른 HTTP 라이브러리를 사용하기 때문이다.

 

 

 

또한, exchangeexecute(: HTTP 볶다의 HTTP 응답을 상기 PUT 반송 체, 예를 들면), 그러나 음표 지원해야 사용 기반 HTTP 라이브러리가 필요한 것을 추가 자주 병용 지원하는데 사용될 수있는 방법은 상기 공정의 일반 버전들이다 조합.

각 HTTP 방법은 세 가지 변종이 : 세 번째 URI를 수신하는 URI 및 URI 변수 (배열, 변수)의 두 개의 수신 템플릿 문자열을, URI를 템플릿, 딩은 인코딩해야합니다 점에 유의하시기 바랍니다. 예를 들면 :  restTemplate.getForObject("https://example.com/hotel list")해진다 https://example.com/hotel%20list URI 또는 URI 템플릿 변수 부호화 된 경우, 듀얼 코딩 등이 발생할 것 같은 수단 :  https://example.com/hotel%20list하게 https://example.com/hotel%2520list사용,이를 방지하기 위해 URI코딩 전에 (재사용) 방법을 제공하는 변종 URI를. URI 인코딩을 완벽하게 제어를 준비하기 위해 사용하는 것이 좋습니다 org.springframework.web.util.UriComponentsBuilder.

내부 템플릿에서 HttpMessageConverter예를 HTTP 메시지는 앞뒤로 POJO 사이에 백업 할 수 있습니다. 기본적으로 setMessageConverters컨버터의 주요 MIME 형식 등록,하지만 당신은 다른 컨버터에 가입 할 수 있습니다.

템플릿 사용 org.springframework.http.client.SimpleClientHttpRequestFactoryDefaultResponseErrorHandler별도의 HTTP 연결이나는 기본 HTTP 오류 처리 전략을 만들 수 있습니다. 그것은 각각이 될 수 setRequestFactorysetErrorHandler이러한 기본값을 무시합니다.

데모

Maven은 소개가 의존

< 속성 > 
<! - JDK版本-> 
< java.version > 1.8 </ java.version > 
</ 속성 > 

< 종속성 > 
< 의존성 > 
< 의 groupId > org.springframework.boot </ 의 groupId > 
< artifactId를 > 봄 -boot 시동기 웨브 </ artifactId를 > 
< 버전 > 1.5.22.RELEASE </ 버전 > 
</ 의존성 >
<의존성 > 
< 의 groupId > org.springframework.boot </ 의 groupId > 
< artifactId를 > 스프링 부팅 스타터 테스트 </ artifactId를 > 
< 버전 > 1.5.22.RELEASE </ 버전 > 
< 범위 > 시험 </ 범위 > 
</ 의존성 > 
</ 의존성 >

메시지 Entity 클래스 만들기

공공  클래스 MsgBean {
 개인  INT의 ID;
개인 문자열 이름; 

공공  INT getId () {
 반환 아이디; 
} 

공공  공극 setId ( INT의 ID) {
  .ID = ID; 
} 

공공 문자열 getName () {
 반환 이름; 
} 

공공  무효 에서는 setName (문자열 이름) {
  .name을 = 이름; 
} 

@Override 
공공 문자열 toString () {
 반환 "MsgBean {"+  
"ID ="+ 아이디 +
", 이름 = '"+ 이름 +'\ ''+ 
'}'; 
} 
}

마스터 클래스 실행 SpringBoot 만들기

@SpringBootApplication
 공용  클래스 DemoApplication {
     공공  정적  무효 메인 (문자열 []에 args) { 
        SpringApplication.run (DemoApplication. 클래스 , 인수); 
    } 
}

 

RestTemplate 구성 클래스를 생성, 표적 획득의 TestTemplate

@Configuration
 공공  클래스 RestTemplateConfig { 
    @Bean 
    공공 RestTemplate restTemplate (ClientHttpRequestFactory 공장) {
         반환  RestTemplate (공장); 
    } 

    @Bean 
    공공 ClientHttpRequestFactory simpleClientHttpRequestFactory () { 
        SimpleClientHttpRequestFactory 공장 = 새로운 SimpleClientHttpRequestFactory (); 
        factory.setReadTimeout ( 5000); // 5秒 
        factory.setConnectTimeout (15000); // 15秒
        반환 공장; 
    } 
}

 

, 서비스 클래스가 ServerController라고 만들기 마이크로 서비스, 편안한 API 호출을 시뮬레이션

/ ** 
* 2019년 9월 24일에 fubin 작성. 
*被调用的컨트롤러 
* / 

@RestController 
(@RequestMapping "서버" )
 공용  클래스 ServerController { 

(@GetMapping "/ GET" )
 공중 MsgBean GET () { 
MsgBean msgBean = 새로운 MsgBean (); 
msgBean.setId ( 1 ); 
msgBean.setName ( "MSG1" );
반환 msgBean을; 
} 

@PostMapping ( "/ 포스트" )
 공중 MsgBean 후 () { 
MsgBean msgBean = 새로운 1 MsgBean ();
msgBean.setId (); 
msgBean.setName ( "MSG1" );
반환 msgBean을; 
} 

/ ** 
* 포스트方法传值
* 파라미터 : 아이디 
* @param의 이름 
* @return 
* / 
@PostMapping ( "/ postParam" )
 공공 문자열 postParam (@RequestParam ( "ID") 문자열 ID, @RequestParam ( "이름" ) 문자열 이름) { 
에서 System.out.println ( "포스트 ID :"+ ID); 
에서 System.out.println ( "포스트 이름 :"+ 이름);
반환 "포스트 SUCC을" ;



* @param의 이름 
* @return 
* / 
@PutMapping ( "/ 풋" )
 공공 문자열 넣어 (@RequestParam ( "ID") 문자열 ID, @ RequestParam ( "이름" ) 문자열 이름) { 
에서 System.out.println ( "풋 ID : "+ ID); 
에서 System.out.println ( "풋 이름 :"+ 이름);
반환 "델 SUCC" ; 
} 


/ ** 
* 델方法传值
* 파라미터 : ID 
* @return 
* / 
@DeleteMapping ( "/ 델" )
 공공 문자열 델 (@RequestParam ( "ID" ) 문자열 ID) { 
System.out에. ID);
반환 "델 SUCC" ; 
} 


}

 

ServerController 서비스 RestRemplate를 호출하여, 서비스 호출 클래스 InvokeController 만들기

추천

출처www.cnblogs.com/fubinhnust/p/11930744.html