이전 글에서는 HTTP 요청과 응답에 대한 기본 개념을 다뤘습니다.
이번 글에서는 REST API에 대한 개념을 다루고, REST API의 구성 요소와 예시 소스코드를 살펴보겠습니다.
REST API란?
REST(API)는 Representational State Transfer (Application Programming Interface)의 약자입니다.
REST는 웹 기술의 발전과 함께 등장한 아키텍처 스타일로, 분산 시스템에서 자원을 정의하고 관리하는 방법을 제공합니다.
REST API는 HTTP 프로토콜을 기반으로 동작하며, URI와 HTTP 메서드를 사용하여 자원을 식별하고 조작합니다.
REST API는 아래와 같은 특징을 가지고 있습니다.
- 클라이언트/서버 구조
- 무상태(stateless)성
- 캐시 처리 가능(Cacheable)
- 계층형 구조(Layered System)
- 자원의 식별(Identification of resources)
- 통일된 인터페이스(Uniform Interface)
REST API의 구성 요소
REST API는 리소스, 메서드, 페이로드, 헤더 등의 구성 요소로 이루어집니다.
리소스
REST API의 핵심은 리소스(Resource)입니다.
리소스는 웹상에서 접근 가능한 모든 것을 뜻하며, URI를 사용하여 식별합니다.
예를 들어, https://example.com/api/books URI는 books 리소스를 나타냅니다.
메서드
HTTP 메서드는 REST API에서 자원에 대한 동작을 정의합니다.
가장 자주 사용되는 메서드는 다음과 같습니다.
- GET: 서버에서 자원을 가져오기 위해 사용됩니다. GET 요청은 URI에 지정된 자원의 표현을 요청합니다.
- POST: 서버에 데이터를 전송하기 위해 사용됩니다. POST 요청은 요청 본문에 데이터를 포함합니다.
- PUT: 서버에 자원을 생성 또는 수정하기 위해 사용됩니다. PUT 요청은 URI에 지정된 자원을 요청 본문에 포함된 표현으로 대체합니다.
- DELETE: 서버에서 자원을 삭제하기 위해 사용됩니다. DELETE 요청은 URI에 지정된 자원을 삭제합니다.
페이로드
HTTP 요청의 본문을 페이로드(Payload)라고 합니다.
페이로드는 서버에 전송하는 데이터를 의미합니다.
JSON, XML, FormData 등 다양한 데이터 형식을 사용할 수 있습니다.
헤더
HTTP 요청과 응답에서 다룬 헤더와 유사하게, REST API에서도 헤더를 사용합니다.
REST API의 헤더는 다음과 같은 정보를 포함할 수 있습니다.
- 인증 정보
- 캐시 제어 정보
- 요청 본문의 데이터 형식
- 응답 본문의 데이터 형식
REST API 예시 코드
다음은 Java에서 REST API를 사용하는 예시 코드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class RestApiExample {
public static void main(String[] args) throws IOException {
URL url = new URL("https://jsonplaceholder.typicode.com/posts/1");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Content-Type", "application/json");
int status = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
System.out.println("Status: " + status);
System.out.println("Response: " + content.toString());
}
}
이 코드는 https://jsonplaceholder.typicode.com/posts/1 URI에서 GET 요청을 보내고, 응답 본문을 출력합니다.
이 코드에서 HttpURLConnection 클래스는 HTTP 요청을 설정하고 보내는 데 사용됩니다.
BufferedReader 클래스는 응답 본문을 읽는 데 사용되며, StringBuilder 클래스는 응답 본문을 저장합니다.
결론
REST API는 HTTP 프로토콜을 기반으로 동작하는 아키텍처 스타일입니다.
REST API는 리소스, 메서드, 페이로드, 헤더 등의 구성 요소로 이루어져 있으며, 자원의 식별과 조작을 위해 URI와 HTTP 메서드를 사용합니다.
이번 글에서는 REST API의 개념과 구성 요소를 다뤘습니다.
다음 글에서는 REST API의 디자인 패턴과 보안에 대해 살펴보겠습니다.