ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] REST API
    Computer Science/CS 2023. 12. 7. 18:39
    728x90

    REST API

    Representational State Transfer

    분산 네트워크 상에서 자원(리소스)을 표현하고 그 상태를 전송하는 아키텍처 스타일입니다. 

     

    REST API란 서버 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식입니다.

    클라이언트에서 정보를 요청하면 서버는 특정 기기에 종속되지 않고 모든 기기에 통용할 수 있는 JSON데이터를 응답으로 보냅니다. 

    서버가 클라이언트의 요청에 체계적으로 대응할 수 있어서 서버 프로그램의 재사용과 확장성이 좋아집니다.

     

    REST

    HTTP URL로 서버의 자원을 명시하고, HTTP 메서드(POST, GET, PATCH/PUT, DELETE)로 해당 자원에 대해 CRUD하는 것을 말합니다.

     

    API

    클라이언트가 서버의 자원을 요청할 수 있도록 서버에서 제공하는 인터페이스입니다.

    REST API특징

    - 자원(Resources)

    REST에서는 모든 자원을 고유한 식별자(URI)를 통해 표현합니다.
    웹의 자원은 각각의 URI로 식별되며(/users), 이러한 자원은 서버에 의해 관리됩니다.

     

    - 표현(Representation)

    자원의 상태는 다양한 표현으로 나타낼 수 있습니다. 
    주로 JSON또는 XML형식의 데이터를 사용합니다.
    클라이언트는 이러한 표현을 통해 서버와 상호작용 합니다.

     

    - 상태 전이(Stateless)

    REST는 상태를 유지하지 않는(Stateless)특징을 가지고 있습니다.
    각 요청은 모든 필요한 정보를 포함하고 있어야 하며, 
    서버는 요청을 처리하기 위해 필요한 정보만을 이용합니다.
    세션 상태는 서버에 저장되지 않고 클라이언트에 의해 유지되어야 합니다.

     

    - 인터페이스 일관성(Uniform Interface)

    REST는 일관된 인터페이스를 제공합니다. 
    자원에 대한 표준화된 인터페이스로서, CRUD연산을 통해 자원을 조작합니다.
    이로써 서버와 클라이언트 간의 상호 운용성을 높입니다.

    위의 4가지 특징(혹은 self-descriptive, HATEOAS)을 엄격하게 지키는 API를 보고 RESTful API라고 합니다.

     

    자원 식별

    REST API의 좋은 예와 나쁜 예

    API Good Bad
    글 조회 GET /posts/{Id} /GET /get/posts/{Id}
    글 생성 POST /posts POST /posts/create
    글 삭제 DELETE /posts/{id} DELETE /posts/delete/{id}

    HTTP메서드로 자원에 대한 행동을 URI로 나타내는 것은 적절하지 않습니다.

     

    데이터 표현

    JSON데이터는 자바스크립트 방식을 차용한 객체 표현식으로 key와 value쌍으로 이루어진 속성(property)로 구성됩니다.

    { "key" : "value"}

     

    상태 전이

    REST API는 서버가 클라이언트의 상태를 저장하지 않습니다.

    HTTP메서드를 통해 클라이언트와 서버 간의 상태 전이를 일으켜 통신을 효과적으로 할 수 있도록 합니다.

     

    인터페이스 일관성

    REST API는 일관된 인터페이스를 제공하기 위해 HTTP메서드와 URI를 일관성 있게 사용합니다. 

    POST /posts

    PATCH /posts/{postId}

    DELETE /posts/{postId}

    와 같이 게시물 생성, 수정, 삭제 URI를 일관성 있게 사용합니다.

     

    POST /posts/create

    PATCH /posts/update/{postId}

    는 올바르지 않는 방법입니다.

     

     


    참고 자료

    코딩 자율학습 스프링부트3 자바 백엔드 개발 입문 (길벗)

    728x90

    'Computer Science > CS' 카테고리의 다른 글

    [CS] 컴퓨터 구성 요소  (0) 2024.02.29
    [CS] HTTP HTTP/2 HTTPS QUIC  (0) 2023.12.07
    [CS] TCP/IP 송수신 원리  (0) 2023.12.04
    [CS]웹 동작 과정  (0) 2023.12.04
    [CS] URI, URL, URN  (0) 2023.12.04

    댓글

© 2022. code-space ALL RIGHTS RESERVED.