REST( Representational State Transfer )

youngkyu MIn·2023년 11월 26일

REST 는 웹 서비스 설계의 한 방식으로 분산 시스템, 특히 웹 기반의 서비스와 애플리케이션을 설계하는 데 있어 일반적인 접근 방식이다.

REST의 주요 특징

  • 리소스 기반: REST는 웹에서 사용되는 모든 것을 리소스(예: 문서, 이미지, 서비스)로 간주한다. 각 리소스는 고유한 URI(Uniform Resource Identifier)를 가지고 있어야 한다.

  • 무상태성(Statelessness): 각 요청은 독립적이며, 서버는 클라이언트의 상태 정보를 유지하지 않는다. 이는 서버가 요청을 처리하는 데 필요한 모든 정보를 해당 요청과 함께 받아야 함을 의미한다.

  • 클라이언트-서버 아키텍처: 클라이언트와 서버는 서로 독립적으로 작동하며, 서로의 구현에 영향을 주지 않아야 한다. 이는 시스템의 확장성을 향상시킨다.

  • 캐시 가능: 리소스는 캐시 가능해야 한다. 이를 통해 네트워크 효율성이 향상되고 클라이언트 응답 시간이 단축된다.

  • 계층화된 시스템: 클라이언트는 일반적으로 서버에 직접 연결되지 않고 중간 서버를 통해 연결될 수 있다. 이는 보안, 로드 밸런싱, 캐싱 등에 유용하다.

  • 코드 온 디맨드 (선택적): 서버는 실행 가능한 코드를 클라이언트에 보낼 수 있다.

REST는 HTTP 프로토콜을 사용하여 서버와 클라이언트 간의 통신을 수행한다. 대표적인 HTTP 메소드로는 GET, POST, PUT, DELETE 등이 있으며, 이러한 메소드들은 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하는 데 사용된다.

더 쉬운 이해

사실 위의 설명만으로는 무슨소린지 잘 모르겠다...

우리에게 익숙한 java, springboot 환경으로 가보자.

RESTful 서비스 구현

도메인 모델 정의: 먼저, 도메인 모델인 Book 클래스를 정의한다.

public class Book {
    private Long id;
    private String title;
    private String author;
    private String isbn;
    // ...
}

리포지토리 생성: 데이터를 저장하고 관리하기 위한 BookRepository 인터페이스를 생성한다. (jpa 사용)

public interface BookRepository extends JpaRepository<Book, Long> {
}

컨트롤러 생성: RESTful 요청을 처리하기 위한 BookController 클래스를 만든다.

@RestController
@RequestMapping("/books")
public class BookController {
    private final BookRepository repository;

    // Constructor with dependency injection

    @GetMapping
    public List<Book> getAllBooks() {
        return repository.findAll();
    }

    @PostMapping
    public Book addBook(@RequestBody Book book) {
        return repository.save(book);
    }

    // ...
}

RESTful API 작동 방식

  • 책 목록 조회 (GET /books): 이 요청은 저장된 모든 책의 목록을 반환한다.

  • 책 추가 (POST /books): 새 책을 추가하기 위해 사용자는 책의 정보(제목, 저자 등)를 JSON 형태로 전송한다.

  • 책 정보 수정 (PUT /books/{id}): 특정 ID를 가진 책의 정보를 수정한다. 사용자는 수정된 책의 정보를 JSON 형태로 전송한다.

  • 책 삭제 (DELETE /books/{id}): 특정 ID를 가진 책을 삭제한다.


REST 의 특징

  • URI를 통한 리소스 식별: 각 책은 고유한 URI(예: /books/1)를 통해 식별된다.
  • HTTP 메소드의 사용: GET, POST, PUT, DELETE와 같은 표준 HTTP 메소드를 사용하여 리소스에 대한 다양한 작업을 수행한다.
  • 데이터 교환 형식: JSON 형식을 사용하여 클라이언트와 서버 간 데이터를 교환한다.

정리

REST API 가 뭐야?

REST API는 웹 서비스에서 클라이언트와 서버 간 통신을 위해 HTTP 프로토콜을 사용하는, 리소스 기반의 프로그래밍 인터페이스다.

profile
한 줄 소개

0개의 댓글