일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JavaScript
- 전송포맷
- mariadb
- spring boot
- Jenkins
- ubuntu
- remove
- Java
- driverspy
- spring
- docker
- 줄복사
- local
- install maven
- change file content
- pkgutil
- ADB
- object
- JAR
- maven
- key bindings
- not to accept jdbcUrl
- duplicate lines
- jdbc
- javaascript
- Change port
- gradle
- svn backup
- install
- ^M바꾸기
- Today
- Total
Simplify
Spring Boot - (10) Restful 호출 모듈 본문
Spring Boot - (10) Restful 호출 모듈
Simplify - Jonghun 2018. 10. 10. 18:16서버 쪽 개발을 진행하다 보면, 다른 서버에 요청을 해야하는 경우가 있습니다. 예를 들어, 우리 서버 플랫폼에서 다른 플랫폼에 API를 Call하여 그 정보를 보여줘야 한다거나, 날씨, 주식 등의 Open API 를 사용하려고 하는 경우에도 RestTemplate를 사용합니다.
이러한 부분을 가장 손쉽게 사용하는 방법은 RestTemplate를 사용하는 것입니다. 여기서는 RestTemplate를 생성하고 이를 이용해서 Call을 보낸 뒤, 그 결과를 Logging 해 보겠습니다.
Dependency 추가
웹 모듈이 필요하므로 아래와 같이 dependency를 추가합니다.
1 2 3 4 5 6 | <!-- APACHE HTTP CLIENT --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <!-- APACHE HTTP CLIENT --> | cs |
서버 개발을 하고 있지만, 다른 서버에 요청을 하고 그 결과를 받기 위해서는 우리가 Client 입장이 되므로, Client 관련 dependency 를 추가합니다.
설정 값 추가
다 하고 설정으로 빼내어도 되지만, 지난 포스트에서 언급했던 것 처럼, Property 값을 가져와서 이를 직접 활용해 보도록 하겠습니다. application.yml 파일을 열고 아래 내용을 추가합니다.
1 2 3 4 5 6 7 | restTemplate: factory: readTimeout: 5000 connectTimeout: 3000 httpClient: maxConnTotal: 100 maxConnPerRoute: 5 | cs |
RestfulConfig 파일의 생성
아래처럼 RestfulConfig.java 파일을 아래에 추가합니다. 여기에서 restTemplate bean 을 생성해 주게 됩니다. 사용하고자 하는 곳에서는 @autowired annotation 넣고 사용하면 될 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package com.simplify.sample.restful; import org.apache.http.client.HttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; @Configuration public class RestfulConfig { @Value("${restTemplate.factory.readTimeout}") private int READ_TIMEOUT; @Value("${restTemplate.factory.connectTimeout}") private int CONNECT_TIMEOUT; @Value("${restTemplate.httpClient.maxConnTotal}") private int MAX_CONN_TOTAL; @Value("${restTemplate.httpClient.maxConnPerRoute}") private int MAX_CONN_PER_ROUTE; @Bean public RestTemplate restTemplate() { HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setReadTimeout(READ_TIMEOUT); factory.setConnectTimeout(CONNECT_TIMEOUT); HttpClient httpClient = HttpClientBuilder.create() .setMaxConnTotal(MAX_CONN_TOTAL) .setMaxConnPerRoute(MAX_CONN_PER_ROUTE) .build(); factory.setHttpClient(httpClient); RestTemplate restTemplate = new RestTemplate(factory); return restTemplate; } } | cs |
Controller 생성
restful call을 하는 아래 Controller 를 생성하고, http://localhost:8080/restfulTest 를 브라우저에 입력합니다. 로그인창이 최초 1회 나타나고 나면 정상적으로 call 한 결과를 화면에 보여줄 것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.simplify.sample.restful; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import com.simplify.sample.security.domain.SecurityMember; @RestController public class RestfulController { private Logger LOGGER = LoggerFactory.getLogger(RestfulController.class); @Autowired RestTemplate restTemplate; @RequestMapping("/restfulTest") public String home(@AuthenticationPrincipal SecurityMember securityMember) { LOGGER.debug(securityMember.getIp()); String obj = restTemplate.getForObject("http://localhost:8080/openapi/readUser/abc", String.class); LOGGER.debug(obj); return obj; } } | cs |
결과 확인
'Web & Server > Spring & Spring Boot' 카테고리의 다른 글
Spring 에서 Exit Code 활용하기 (How to handle exit code in Spring Framework) (0) | 2019.06.07 |
---|---|
HttpURLConnection 을 이용한 HTTP 호출하기 (How to request HTTP url with HttpURLConnection) (0) | 2019.06.05 |
Spring Boot - (9) Property, Authentication Principal (0) | 2018.10.10 |
Spring Boot - (8) Logback 상세화하기 (2) | 2018.10.08 |
Spring Boot - (7-1) Login 성공 시점에 처리 로직 구현 (0) | 2018.10.08 |