REST 클라이언트는 REST API를 사용하는 프로그램을 의미한다. REST API 자체가 HTTP를 사용하기 때문에 HTTP를 지원하는 모든 프로그램은 REST API 클라이언트가 될 수 있다. 예를 들어 웹 브라우저도 서버와 HTTP로 통신하기 때문에 웹 브라우저로 REST API를 호출하는 것이 가능하다. 물론 웹 브라우저 자체만으로는 GET 이외의 메서드 호출에는 어려움이 있지만 GET 요청을 처리하는 API는 기본적으로 웹 브라우저만으로 호출할 수 있다.
만일 스마트폰 앱을 개발하면서 서버로부터 데이터를 가져오기 위해 REST API를 사용한다면 스마트폰 앱도 REST 클라이언트가 되는 것이다.
REST 클라이언트 구현은 언어에 중립적이기 때문에 자바, 자바스크립트, 파이썬, C/C++ 등 거의 모든 언어를 사용할 수 있다. 다만 HTTP 프로토콜에 따라 통신할 수 있는 일종의 통신 프로그램을 구현해야 하고 수신되는 JSON 메시지를 프로그램에 적합한 객체로 변환하는 작업 등이 요구된다.
별도의 라이브러리 없이 구현하려면 자바에 기본적으로 포함된 URLConnection 클래스를 사용할 수 있으나 다소 코드가 많아지고 처리 과정이 복잡해진다.
URL url = new URL(strUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
con.addRequestProperty("Accept", "text/html");
con.setRequestMethod("GET");
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8"));
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
...
아파치의 HttpClient 라이브러리를 사용해 구현하는 경우에는 비교적 간결하게 코드를 작성할 수 있다.
// HttpClient 객체 생성
HttpClient client = HttpClientBuilder.create().build();
// Get 요청을 위한 객체 생성
HttpGet getRequest = new HttpGet(requestURL);
// 헤더 정보 설정
getRequest.addHeader("Accept", "text/html");
// 요청 실행 및 응답 객체 생성
HttpResponse response = client.execute(getRequest);
// 응답 메시지 처리
String body = handler.handleResponse(response);
응답 메세지의 경우 단순히 문자열로 처리하거나 문자열을 자바 객체로 변환하거나 JSON 객체로 변환해 원하는 값만 추출하거나 다양한 형태로 활용할 수 있으며, 이부분에 대해서만 별도 라이브러리를 사용하는 것도 가능하다.
OKHttp, Unirest-Java, Retrofit, Spring RestTemplate 등 다양한 라이브러리가 있으니 참고한다.
'Programming > Web' 카테고리의 다른 글
[Web] IoC(Inversion of Control), DI(Dependency Injection), AOP(Aspect-Oriented Programming) (1) | 2022.10.31 |
---|---|
[Web] 스프링 프레임워크와 스프링 부트 (0) | 2022.10.27 |
[Web] JAX-RS (0) | 2022.10.26 |
[Web] REST API (0) | 2022.10.26 |
[Web] 필터(Filter) (0) | 2022.10.26 |