[java] REST란 무엇인가? 어떻게 작동하는가?
개요
REST는 Representational State Transfer의 약자로, 웹 서비스의 구축과 통신을 위한 소프트웨어 아키텍처 스타일입니다. REST는 네트워크 상에서 클라이언트와 서버 사이의 통신을 간단하고 효율적으로 만들기 위해 일련의 제약 조건을 제시합니다. 이러한 제약 조건을 준수하는 웹 서비스는 가독성, 확장성, 신뢰성이 뛰어난 아키텍처를 가질 수 있습니다.
REST의 핵심 개념
REST 아키텍처를 이해하기 위해서는 다음과 같은 핵심 개념을 알고 있어야 합니다:
- 자원 (Resource)
- REST에서 자원은 클라이언트가 요청하는 정보의 대상입니다. 예를 들어, 사용자, 상품, 주문 등이 자원이 될 수 있습니다. 각 자원은 고유한 식별자인 URI로 식별됩니다.
- 표현 (Representation)
- 자원은 클라이언트에게 특정 형식으로 표현되어 전달됩니다. 예를 들어, JSON, XML 등의 형식을 사용할 수 있습니다. 클라이언트는 이러한 표현을 통해 자원에 접근하고 조작할 수 있습니다.
- 작업 (Method)
- REST에서는 HTTP를 기반으로하는 일련의 메서드를 사용하여 자원을 조작합니다. 대표적으로 GET, POST, PUT, DELETE 등이 있습니다. 각 메서드는 특정한 의미와 동작을 가지고 있습니다.
- 상태 전이 (State Transfer)
- 클라이언트와 서버 사이에서 요청과 응답을 통해 상태가 전달됩니다. 서버는 상태를 변경하고, 클라이언트는 서버의 상태를 이용하여 다음 동작을 수행합니다.
REST의 작동 방식
REST 아키텍처를 따르는 웹 서비스는 다음과 같이 작동합니다:
- 클라이언트가 서버에게 요청을 보냅니다.
- 서버는 클라이언트의 요청을 처리하고, 요청에 필요한 자원을 제공합니다.
- 서버는 응답으로 표현을 반환하고, 상태 정보를 함께 전달합니다.
- 클라이언트는 서버의 응답을 받아 처리하고, 필요에 따라 추가적인 요청을 보낼 수 있습니다.
- 이러한 요청과 응답의 과정을 반복하며, 클라이언트와 서버 간의 효율적인 통신이 이루어집니다.
예시 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class RESTClient {
public static void main(String[] args) throws Exception {
// RESTful API 요청을 보낼 URL
String url = "https://api.example.com/users";
// URL 객체 생성
URL obj = new URL(url);
// HTTP 연결 객체 생성
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// GET 메서드로 설정
con.setRequestMethod("GET");
// 응답 상태 코드 확인
int responseCode = con.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 응답 메시지 읽기
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 응답 내용 출력
System.out.println("Response Data: " + response.toString());
}
}
참고 자료
- Understanding RESTful Services
- RESTful API Design: Best Practices
- Introduction to RESTful Web Services
- REST API Tutorial