Java

[Java] REST API 간단 이해

Big Iron 2023. 8. 4. 01:33

REST
RESTful
REST API
RESTful API

개발을 시작하고 많이 보고 들어본 단어들이다. REST가 공통된 위 단어들이 무엇을 뜻하는지 보겠다.

REST (Representational State Transfer)

  • CRUD(Create, Read, Update, Delete) 작업을 HTTP 프로토콜을 통해 API를 설계하기 위한 아키텍처 스타일이다
  • Stateless(무상태성)이 특징으로 각 요청은 서버에서 어떤 상태도 저장하지 않아야 함. 모든 정보는 각 요청 안에 포함되어야 한다
    • 사용자가 로그인한 상태에서 API를 호출한다고 했을 때, 이 요청을 누가 요청했는지에 대한 정보 (토큰, 세션 정보)를 포함해야 함(요청을 처리하기 위한 모든 필요한 요소)

RESTful

  • REST 원칙을 따르는 것을 의미함. -> REST 원칙을 준수한 서비스를 의미

REST API

  • REST 원칙을 기반으로 한 API(Application Programming Interface)이다.
    URI 예시
      GET /books – 책 전체 리스트 조회 API
      GET /books/1 – 전체 책 리스트에서 1번 책 조회 API
      POST /books – 새로운 책 추가 API
      PUT /books - 5번 책의 전체 정보 수정 API
      PATCH /books/5 – 5번 책의 일부 정보 수정 API
      DELETE /books/5 - 5번 책 삭제 API

RESTful API

  • REST 원칙을 따르는 API를 의미

REST API 네이밍 컨벤션

  1. 자원 이름은 명사를 사용한다
    O: /users, /products
    X: /getUser, /createProduct

  2. 복수 명사 사용
    O: /users (사용자 전체를 나타냄)
    X: /user

  3. HTTP 메서드에대한 내용이 직접적으로 표현되지 않아야 한다
    O: /users/1, /products/1
    X: /users/update, /createProduct, /users/delete/1 ...

  4. 2번에 내용을 더하자면, 자원에 대한 행위는 HTTP 메서드로 표현한다
    GET: 리소스 조회
    POST: 리소스 생성
    PUT or PATCH: 리소스 수정
    DELETE: 리소스 삭제
    -> http메서드로 get, post, delete, update 등을 정의하고 uri에는 표현하지 않는다.

  5. 자원의 계층 구조는 /로 나타냄
    ex) /users/1/orders (1번 사용자의 전체 주문들)
    ex) /users/1/orders/1 (1번 사용자의 1번 주문)

  6. 쿼리 파라미터는 필터, 페이징, 정렬 등의 목적
    ex) /users?role=admin (관리자 역할을 가진 사용자만 조회)

  7. 상태 코드 활용 (클라이언트와 소통에 편하다)
    Ok: 200
    Created: 201
    Bad Request: 400
    Not Found: 404
    등등