본문 바로가기
#IT 개발노트

RESTful API 구현 방법 소개

by 꾸미라기 2024. 1. 4.
반응형
SMALL

 

오늘의 포스팅은 간결하고 효율적인 통신을 지원하며, 다양한 플랫폼 간의 상호 작용을 용이하게 해주는 RESTful API에 대한 이점, 작동 방식, 구현 방법에 대해 설명하겠습니다.

1. RESTful API란?

 

RESTful API는 서로 다른 시스템이 인터넷을 통해 정보를 교환하기 위해 사용하는 인터페이스로 정의됩니다. 이는 Representational State Transfer(REST) 아키텍처 스타일을 기반으로 하며, 웹 서비스를 구현하는 데 사용됩니다. RESTful API는 간결하고 효율적인 통신을 지원하며, 다양한 플랫폼 간의 상호 작용을 용이하게 합니다.

기본적으로 RESTful API는 자원(Resource)을 URI(Uniform Resource Identifier)로 표현하고, HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 이러한 자원에 대한 다양한 작업을 수행합니다. 자원의 상태는 표현(Representation)을 통해 주고받으며, 데이터 형식으로는 주로 JSON 또는 XML이 사용됩니다.

이 인터페이스는 무상태(Stateless)로 작동하며, 각 클라이언트 요청은 서버에 저장된 상태를 가지지 않습니다. 모든 필요한 정보는 요청 자체에 포함되어 있어, 서버는 각 요청을 독립적으로 처리하고 응답합니다. 이로써 시스템 간 통신이 더 간결하고 확장 가능하게 됩니다.

RESTful API의 특징은 단순하면서도 효과적인 디자인을 통해 클라이언트와 서버 간의 통신을 향상시키고, 새로운 기능을 쉽게 추가할 수 있는 유연성을 제공합니다. 이를 통해 안전하게 정보를 교환하고 서로 다른 플랫폼 간의 통합을 원활하게 수행할 수 있습니다.

2. RESTful API 이점


(1) 간결하고 가독성 있음
RESTful API는 간결하고 직관적인 디자인을 가지고 있어 읽기 쉽고 이해하기 쉽습니다. 자원을 표현하는 URI와 HTTP 메서드를 사용하여 명확한 인터페이스를 제공합니다.

(2) 상태 무관(Statelessness)
RESTful API는 무상태(Stateless)로 작동하므로 각 요청은 서버에 저장된 상태를 가지지 않습니다. 이는 서버를 확장하고 부하를 분산하기 쉽게 만들어줍니다.

(3) 자원 중심(Resource-Based)
모든 자원은 고유한 식별자(URI)를 가지며, 이를 통해 각 자원에 접근합니다. 이러한 자원 중심의 구조는 일관성을 유지하고 API를 관리하기 용이하게 합니다.

Example : 특정 글 조회
URI: https://api.example.com/posts/123
HTTP 메서드: GET
설명: ID가 123인 특정 글을 조회하기 위한 URI입니다.

(4) 다양한 데이터 형식 지원
RESTful API는 다양한 데이터 형식을 지원하며, 주로 JSON 또는 XML을 사용하여 데이터를 교환합니다. 이는 다양한 클라이언트와의 상호 운용성을 보장합니다.

 

Example : JSON
{
  "id": 1,
  "title": "RESTful API 설명",
  "content": "RESTful API에 대한 예시와 설명입니다.",
  "author": "John Doe"
}


(5) HTTP 표준 사용
RESTful API는 HTTP 프로토콜을 기반으로 하므로 웹 표준을 따릅니다. 이는 다양한 플랫폼 간의 통신을 용이하게 합니다

(6) 캐싱 지원
HTTP의 캐싱 메커니즘을 활용하여 서버의 응답을 캐시할 수 있습니다. 이는 성능을 향상시키고 대역폭을 절약하는 데 도움이 됩니다.

(7) 보안 강화 가능
HTTPS를 통한 암호화 및 인증을 지원함으로써 보안 강화가 가능합니다. 추가적인 보안 기능도 필요에 따라 구현할 수 있습니다.

(8) 풍부한 문서화
RESTful API는 명확하게 정의된 자원과 메서드를 사용하기 때문에 문서화가 쉽습니다. 이는 개발자들이 API를 빠르게 이해하고 사용할 수 있도록 도와줍니다.

(9) 클라이언트와 서버의 분리: RESTful API는 클라이언트와 서버 간의 역할을 분리하여 독립적인 발전이 가능하도록 합니다. 이는 각각의 엔드포인트를 독립적으로 유지하고 업그레이드할 수 있게 합니다.

3. RESTful API 작동 방식

 

(1) 클라이언트는 URI를 사용하여 원하는 자원을 식별합니다. 이 URI는 서버에 있는 특정 자원을 가리킵니다.

(2) 클라이언트는 해당 자원에 대해 수행하고자 하는 작업에 적절한 HTTP 메서드를 선택합니다. 예를 들어, GET 메서드는 자원을 조회하고, POST 메서드는 새로운 자원을 생성하는 데 사용됩니다.

(3) 클라이언트는 선택한 HTTP 메서드와 URI를 사용하여 서버에 요청을 전송합니다. 요청은 필요한 경우 헤더와 본문을 포함할 수 있습니다.

(4) 서버는 클라이언트의 요청을 받고, 해당하는 자원에 대한 처리를 수행합니다. 처리 후, 서버는 적절한 HTTP 상태 코드와 함께 응답을 생성합니다.

(5) 서버는 처리된 결과를 클라이언트에게 응답 본문으로 전송합니다. 이때, 데이터 형식은 주로 JSON 또는 XML 형식을 사용합니다.
클라이언트의 처리:

(6) 클라이언트는 서버의 응답을 받아서 필요한 처리를 수행합니다. 이때, 응답에 따라 자원의 상태를 변경하거나 추가적인 동작을 수행할 수 있습니다.

4. RESTful API 구현 방법

 

Spring 프레임워크를 사용하여 간단한 RESTful API를 구축하는 예제로
"HELLO"라는 자원을 요청하면 서버는 JSON 형식의 응답으로 "FROM: SEOUL, NAME: 홍두깨"를 반환합니다.

(1) Spring Boot 프로젝트 생성
Language: Java
Packaging: Jar 또는 War 선택
Dependencies: Spring Web 선택

(2) AController 컨트롤러 클래스 생성

@RestController
@RequestMapping("/hello")
public class AController {

    @GetMapping
    public HelloResponse getHelloResource() {
        return new HelloResponse("SEOUL", "홍두깨");
    }
}


(3) 응답 모델 클래스 생성

public class HelloResponse {

    private String from;
    private String name;

    public HelloResponse(String from, String name) {
        this.from = from;
        this.name = name;
    }

    public String getFrom() {
        return from;
    }

    public String getName() {
        return name;
    }
}


(4) start 클래스 생성

@SpringBootApplication
public class AApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }


(5) 애플리케이션 실행
AApplication .java를 실행하여 Spring Boot 애플리케이션을 시작합니다.

(6) 테스트
브라우저나 API 테스트 도구를 사용하여 http://localhost:8080/hello에 GET 요청을 보내고 응답을 확인

반응형