ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • REST API
    BackEnd/Spring Boot 2022. 5. 25. 21:30
    반응형

    REST API

    • REST를 기반으로 만들어진 API

     

    REST

    • Representational State Transfer의 약자
    • 2000년도 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개된 개념
    • 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식
    • 웹에 존재하는 모든 자원(이미지, 동영상, 텍스트 등)에 고유한 URI를 부여해 활용하는 개념

     

    REST 구성요소

    • 자원(Resource): HTTP URI
    • 행위(Verb): HTTP Method(GET, POST, PUT, DELETE 등)
    • 표현(Representation): 서버가 응답으로 보내주는 자원의 상태(JSON, XML, TEXT 등)

     

    REST 특징

    • Uniform(유니폼 인터페이스): URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행합니다.
    • Stateless(무상태성): 클라이언트의 Context를 서버에 저장하지 않기에 API 서버는 들어오는 요청만 단순히 처리합니다.
    • Cacheable(캐시 가능): HTTP가 가진 캐싱 기능을 적용할 수 있습니다.
    • Self-descriptiveness(자체 표현 구조): REST API 메시지만 보고도 쉽게 이해가 가능한 자체 표현 구조입니다.
    • Client-Server 구조: 클라이언트와 서버 역할을 구분하여 의존성을 제거합니다.
    • 계층형 구조: 사용자 인증, 암호화, 로드밸런싱 등의 계층을 추가하여 구조상의 유연성을 가질 수 있습니다. 

     

    REST 장점

    • Easy to use: HTTP 인프라를 그대로 사용하기에 별도 인프라 구축을 요구하지 않습니다.
    • Complete Separation between Client and Server: 클라이언트와 서버의 역할이 명확하게 분리됩니다.
    • Detail expression for specific data type: 특정 타입(JSON, XML 등)의 데이터를 페이로드(Body)에 표현할 수 있습니다.

     

    REST 단점

    • Restriction of HTTP Method: 메소드 형태가 제한적입니다.
    • Absense of Standard: 표준이 존재하지 않습니다.

     

    REST API 설계 시 고려사항

    • Consumer first: 개발자 입장이 아닌 API을 사용하는 소비자 입장에서 간단 명료하고 직관적이게 설계합니다.
    • Make best use of HTTP: HTTP의 장점을 최대한 살려 설계합니다.
    • Request methods: 리소스별 적절한 HTTP Method(GET/POST/PUT/DELETE)를 사용합니다.
    • Response Status: API 응답 시 적절한 HTTP 상태 코드(200/404/400/201/401)를 결정합니다.
    • No secure info in URI: URI를 통해 크리티컬한 데이터를 제공하면 안됩니다.
    • Use plurals: 단수형보다는 복수형을 사용합니다.
    • User nouns for resources: 리소스에 대한 정보는 명사형태를 사용합니다.
    • For exceptions: POST /users/{id}, DELETE /users/{id}와 같이 일관된 엔드포인트를 가지는 것이 좋습니다.

     

    Richardson Maturity Model

      Richardson Maturity Model은 REST 접근 방식의 주요 요소를 세 단계로 나눈 모델입니다. 여기에는 resources, http verbs 및 hypermedia controls이 도입됩니다. 로이 필딩(Roy Fielding)은 Level3이 REST의 전제 조건임을 명백히 했습니다.

    • Level 0
    • Level 1: Resources
    • Level 2: Level1 + HTTP Methods
    • Level 3: Hypermedia Controls, Level2 + HATEOAS(DATA + Next Possible Actions)

     

    [참고자료]

    반응형

    'BackEnd > Spring Boot' 카테고리의 다른 글

    Spring Boot 핵심 기능 2 - 라이브러리 관리  (0) 2023.04.19
    Spring Boot 핵심 기능 1 - 내장 톰캣  (0) 2023.03.25
    HAL Browser  (0) 2022.05.25
    Actuator  (0) 2022.05.20
    HATEOAS  (0) 2022.05.20

    댓글

Designed by Tistory.