REST API

진경천·2024년 10월 2일

REST

Representational State Transfer
자원을 이름으로 구분하여 자원의 상태 정보를 주고 받는 네트워크 아키텍처 원리의 모음이다.
HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용한다.

구성 요소

  • 자원(Resource) HTTP URI
  • 행위(Verb) HTTP Method
  • 표현(Representation) HTTP Message Pay Load

자원 - URI

Uniform Resource Identfier
자원을 식별하는 고유한 문자열 시퀀스

• Scheme: 리소스에 접근하기 위한 프로토콜
• Host: 리소스를 호스팅하는 서버 이름 또는 IP
• Port: 서버에서 리소스에 접근하기 위해 사용되는 게이트
• Path: 호스트 내에서 리소스의 정확한 위치
• Query Parameters: 리소스에 전달되는 추가정보
• Fragment Identifier: 부가적인 식별

행위 - HTTP Method

자원에 대한 조작을 정의한다.

메소드 설명
GET /user/{userId} 특정 사용자의 정보를 조회
POST /user 특정 사용자를 등록
PUT /user/{userId} 특정 사용자의 정보를 수정
DELETE /user/{userId} 특정 사용자의 정보를 삭제

표현 - HTTP message pay load

클라이언트의 요청에 따른 서버의 응답
JSON, XML, TEXT 등의 형태로 나타내며 JSON이 가장 많은 쓰인다.

{
  "name": "Tom",
  "age": 30,
  "isEmployee": true
  "phoneNumbers": ["123-123-123", "11-11-11]
}

경량의 데이터 교환 형식이며 key-value 의 집합 구조로 이뤄졌다

REST 인터페이스에 적용되는 제한 조건

  1. Client-Server 구조
    ➡️ 사용자 인터페이스와 데이터 스토리지를 분리함으로써 각 파트가 독립적으로 작용할 수 있게한다.
  2. 무상태
    ➡️ 각 요청간 클라이언트의 콘텐츠가 서버에 저장되어서는 안된다.
  3. 캐시 처리 가능(Casheable)
    ➡️ 클라이언트는 응답을 캐싱할 수 있어야 한다.
  4. 계층화 시스템
    ➡️ 클라이언트가 서버를 직접 호출하지 않음
  5. 인터페이스 일관성
    ➡️ 항상 일관된 인터페이스로 응답을 한다.
  6. Code-On-Demand
    ➡️ 클라이언트가 실행시킬 수 있는 로직을 전송해 기능을 확장시킬 수 있다.

API

Application Programming Interface
정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성요소가 서로 통신할 수 있게 하는 메커니즘

인터페이스는 두 애플리케이션 간의 서비스 계약이라 볼 수 있으며 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다.

REST API의 기본 설계 원칙

  1. 인터넷에 있는 모든 것은 고유한 주소(URI)를 가져야한다.
  2. 표현을 통한 자원의 조작
    • 웹 페이지 정보 조작 시 해당 정보는 JSON, XML 형식으로 구성되며 이러한 형식을 통해 정보에 대한 CRUD를 수행해야함
  3. 자기 서술적 메시지
    • 메시지는 자기 자신을 어떻게 처리해야 할지 설명해야 한다.
    • 수신 하는 쪽에서 별도의 설명 없이도 해당 메시지를 이해하고 처리할 수 있도록 정의해야 함
  4. HATEOAS(Hypermedia As The Engine of Application State)
    • 웹 페이지는 다른 페이지나 상태로 넘어 갈 수 있도록 링크를 제공 해야한다.
    • 링크를 통해 사용자나 프로그램이 다음에 할 수 있는 동작을 유추 가능해야함.

URI 작성 규칙

  • 소문자로만 구성
  • 동사보다는 명사 사용
  • 자원에 대한 행위는 HTTP Method로 표한
  • /로 계층 관계를 표현
  • 마지막에는 /를 붙이지 않음
  • 단어와 단어 사이는 - 하이픈을 사용
  • 파일 확장자는 포함시키지 않음

URL과 URI의 차이
URL: 어떻게 위치를 찾고 도달할 수 있는지까지 포함되어야 하기 때문에 프로토콜과 Host name이 결합한 상태
URI: Host name과 URL 모두 URI로 칭한다.

profile
어중이떠중이

0개의 댓글