ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • REST API
    얇게 공부한 CS 2024. 2. 25. 14:50

    웹 애플리케이션과 시스템들은 다양한 서비스와 데이터를 공유하며 상호작용합니다.

    이러한 상호작용을 가능하게 하는 핵심 기술 중 하나가 바로 REST API입니다.

    REST API는 다양한 플랫폼과 언어에서 사용할 수 있는 유연성을 제공하며,
    웹 기반 서비스의 개발을 간소화하고 표준화합니다.

    | REST(Representational State Transfer) 등장 배경

    HTTP 프로토콜GET, POST, PUT, DELETE 같은 다양한 메스드를 지원합니다.

    서버가 이런 HTTP 메서드를 기존 설명과 맞지 않게 사용하더라도 프로그램 개발은 가능합니다.

    하지만 이러면 소통과 협업에 문제가 발생할 수 있어서 이를 해결하기 위해
    REST라는 아키텍처 스타일이 제안되었습니다.

    | REST의 이해

    REST는 특정한 자원에 대해 그 상태 정보를 주고받는 개발 방식을 말합니다.

    REST의 구성 요소는 다음과 같습니다.

    - 자원(Resource): URL을 이용하여 표현됩니다.

    - 행위(Verb): HTTP 메서드를 통해 정의됩니다.

    - 표현(Representation): 자원의 상태는 페이로드를 통해 전달됩니다.(주로 JSON 형식)

     

    예를 들어 회원가입을 원하는 사용자가 회원가입 요청을 보내는 경우를 보면

    다음과 같습니다.

    URI: https://www.example.com/users
    HTTP Method: POST
    Payload: {"email": "email@email.com", "password": "1234"}

    해당 요청은 "https://www.example.com/users" URL에 대해 POST 메서드를 사용하여

    이메일과 비밀번호 데이터를 전송합니다.

    | REST API

    REST APIREST 아키텍처 원칙을 따르는 API로, HTTP 프로토콜을 사용하여 구현됩니다. 

    REST API 원칙

    - 클라이언트-서버 구조: 시스템을 클라이언트와 서버로 분리해 각각 독립성을 보장합니다.

    - 무상태성 (Stateless): 서버는 클라이언트의 상태를 저장하지 않고, 각 요청이 독립적으로 처리됩니다.

    - 캐시 가능 (Cacheable): 효율성을 높이기 위해 응답은 캐시 될 수 있어야 됩니다. 

    - 계층화된 시스템: 클라이언트는 최종 서버와 직접 통신하지 않아도 되고, 중간 서버를 통한 요청 전달이 가능합니다.

    - 코드 온 디맨드: 필요에 따라 응답에 실행 가능한 코드를 포함할 수 있습니다.

    - 균일한 인터페이스: 모든 자원은 고유한 URI를 통해 식별되고, URI로 지정한 resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행합니다.

    장점

    - 유연성: 다양한 데이터 포맷(JSON, XML)을 지원하여, 다양한 클라이언트와의 호환성을 제공합니다.

    - 확장성: REST API는 시스템 간의 통합을 용이하게 하고, 서비스의 확장을 쉽게 할 수 있도록 지원합니다.

    - 독립성: REST API는 사용되는 기술과 독립적이어서 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 작성할 수 있습니다.

    단점

    - 무상태성의 한계: 무상태성으로 인해 클라이언트의 상태를 유지하기 위한 별도의 관리가 필요할 수 있습니다.

    - 보안 문제: HTTP를 사용하기 때문에, 보안에 주의가 필요하고, SSL/TLS를 통한 데이터 암호화가 권장됩니다.

    '얇게 공부한 CS' 카테고리의 다른 글

    Oauth  (0) 2024.02.27
    HTTP(HyperText Transfer Protocol) 이해하기  (0) 2024.02.26
    명령어의 구조  (0) 2024.02.24
    쿠키(Cookie)와 세션(Session)  (0) 2024.02.23
    웹 브라우저의 동작  (0) 2024.02.21
Designed by Tistory.