[리팩토링]@ Controller 에서 API 를 호출하여 사용할 수 있는 restTemplate

Spring Webflux 에서 사용할 수 있는 WebClient 라는 모던한 대체제가 있는 클라이언트입니다.

정의

  • 동기 방식의 HTTP 클라이언트
  • 웹 서비스 호출을 위한 메서드 제공

특징

  • 동기성
    • 동기적으로 동작함.
    • API 호출을 하는 경우 해당 호출이 완료될 때까지 대기함.
  • 다양한 HTTP 메서드
    • GET , POST , PUT , DELETE 등의 HTTP 메서드를 위한 템플릿 메서드 제공
  • 데이터 변환 가능
    • JSON , XML 등의 여러 응답에 대응가능

기본 세팅

  1. Spring Bean 등록
    @Configuration
    public class RestConfig {
    
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
  1. api 의 호출
    @Controller
    @RequestMapping("/boards")
    public class BoardViewController {
    
        @Autowired
        private RestTemplate restTemplate;
    
        @GetMapping("/{boardId}")
        public String boardPage(@PathVariable Long boardId, Model model) {
            Board board = restTemplate.getForObject("http://api.example.com/boards/" + boardId, Board.class);
            model.addAttribute("board", board);
            return "boardPage";
        }
    }
  • 그외에도 getForEntity → ENTITY 형식 응답을 받아올수있음.
  • exchange → List 형태의 데이터를 불러올수 있음.

Uploaded by N2T