본문으로 바로가기

REST는 Representational State Transfer의 약자이다. 다른 웹 시스템에서 제공하는 기능을 사용하고자 할 때 사용자는 API의 URL만 알면 되기 때문에 SOAP보다 사용이 간편하다.

구글, 네이버 등 많은 웹 서비스 업체들이 REST API를 사용해 자사의 기능들을 개발자들에게 제공하고 있다.


Spring (Spring boot) 프로젝트에서 간편하게 REST API를 만들고, 다른 서버에서 이를 호출해 사용하는 것에 대해 간단하게 알아보도록 하자.


REST API 만들기


REST API로 주고받을 수 있는 값들은 여러 형태가 있다. 주로 XML, HTML, JSON형태로 결과를 리턴해 주는데, 간단하게 String 문자 하나를 파라미터로 받아서 변형시킨 뒤 반환해 주는 API를 만들어 보겠다.


입력 파라미터 : String

Return : String


1. Spring Boot 프로젝트를 생성한다.


2. 클래스를 하나 만들고, 클래스에 @RestContoller 어노테이션을 붙여준다.


3. 기능을 수행할 메소드에 @RequestMapping 어노테이션을 붙여 REST API를 받을 요청명을 Mapping해주면 끝!


1
2
3
4
5
6
7
8
9
@RestController
public class RestTestController {
    
    @RequestMapping("/restTest")
    public String restTest(@RequestParam String str){
        return str + " : Rest Test 완료!!!";
    }
 
}
cs


서버를 띄우고 브라우저에 "http://localhost:포트/restTest?str=test12345 " 를 입력해 제대로 반환 하는지 테스트 해 보자.


API를 코딩한 대로 출력이 잘 되는 것을 확인할 수 있다.


이제 이렇게 만들어 놓은 REST API를 다른 Spring 서버에서 호출해서 사용해 보자.



REST API 호출


위에서 만든 프로젝트와는 별개로 Spring Boot 프로젝트 하나를 새로 만들자.

새로 만든 Spring 프로젝트에서 조금 전 만들어서 올려 놓은 REST API를 호출해 볼 것이다.


1. RestTemplate에 MessageConverter를 셋팅한다.

2. map 에 parameter를 셋팅한다.

3. restTemplate의 메소드로 REST API를 호출한다.


위와 같은 과정으로 코딩을 하면 될 것이다.

아래는 아까 만든 REST API( /restTest ) 를 호출하는 예제 코드이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    // RestTemplate 에 MessageConverter 세팅
    List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
    converters.add(new FormHttpMessageConverter());
    converters.add(new StringHttpMessageConverter());
 
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setMessageConverters(converters);
 
    // parameter 세팅
    MultiValueMap<StringString> map = new LinkedMultiValueMap<StringString>();
    map.add("str""thisistest");
 
    // REST API 호출
    String result = restTemplate.postForObject("http://localhost:8082/restTest/", map, String.class);
    System.out.println("------------------ TEST 결과 ------------------");
    System.out.println(result);
cs


이 코드가 실행되면, "REST API 만들기" 에서 만든 서버의 메소드를 URL을 통해 호출해 결과를 얻어 올 수 있다.




사실 이렇게 만들어 놓으면, 보안에 매우 취약하다.

API키, 토큰, 권한 등의 방식을 사용해 REST API의 보안성을 확보한 뒤 사용하는 것이 좋다.


 Other Contents 

댓글을 달아 주세요

티스토리 툴바