본문 바로가기
야미스터디/Network

[Network] REST API 📌

by 의정부핵꿀밤 2022. 7. 13.
728x90

API란?

  • Application Programming Interface의 약자
  • 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스를 뜻한다
  • 즉, 응용 프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스를 뜻한다
  • API는 프론트엔드와 백엔드가 데이터를 주고 받기 위한 대표적인 방법이다
  • 따라서 API를 사용하면 내부 구현 로직을 알지 못해도 정의되어 있는 기능을 쉽게 사용할 수 있다
💡인터페이스 : 어떤 장치 간 정보를 교환하기 위한 수단이나 방법

 


REST 란?

  • Representational State Transfer 의 약자
  • 자원(resource)의 표현(representation)에 의한 상태 전달
  • HTTP 프로토콜을 통해 API를 설계하기 위한 아키텍처 스타일로, 일종의 규칙을 의미한다
  • HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고, HTTP Method를 통해 자원을 교환하는 것을 말한다
  • REST의 구성 요소
    • 자원 (Resource) : URI
    • 행위 (Verb) : HTTP Method
    • 표현 (Representation) : 데이터를 주고받는 형태
  • 즉, REST는 URI를 통해 자원을 표시하고, HTTP Method를 이용하여 해당 자원의 행위를 정해주며, 그 결과를 받는다

 

 

REST의 특징

  1. Server-Client 구조
    • 자원이 있는 쪽이 Server, 요청하는 쪽이 Client가 된다
    • 클라이언트와 서버가 독립적으로 분리되어 있어 서로간의 의존성이 적다
  2. Stateless (무상태)
    • 요청 간에 클라이언트 정보가 서버에 저장되지 않는다
    • 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다
  3. Cacheable (캐시 처리 기능)
    • HTTP의 특징인 캐싱 기능을 적용했다
    • 대량의 요청을 효율적으로 처리하기 위해 캐시를 사용한다
  4. Layered System (계층 구조)
    • 클라이언트는 서버의 구성과 상관 없이 REST API 서버로 요청하면 된다
    • 서버는 다중 계층으로 구성될 수 있다
    • ex) 로드 밸런싱, 보안 요소, 캐시 등
  5. Uniform Interface (인터페이스 일관성)
    • 정보가 표준 형식으로 전송되기 위해 구성 요소 간 통합 인터페이스를 제공한다
    • HTTP 프로토콜을 따르는 모든 플랫폼에서 사용하게끔 설계되어 있다
    • 즉, 특정 언어나 기술에 종속되지 않는다!
  6. Self-Description (자체 표현)
    • 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조이다
  7. Code on Demand (Optional)
    • 요청을 받으면 서버에서 클라이언트도 코드 또는 스크립트(로직)를 전달하여 클라이언트 기능을 확장한다

 

 

 


REST API 란?

  • REST 아키텍처의 제약 조건을 준수하는 웹 API를 말한다
  • 즉, REST 하게 구현된 API로, RESTful API라고도 부른다
  • RESTful 웹 API에는 공식적인 표준은 없다
  • REST API 의 작동 방식
    • REST API는 HTTP 요청을 통해 통신하여 데이터 생성, 읽기, 업데이트 및 삭제 기능을 완료한다 (CRUD)
    • POST - 리소스 생성 (Create)
    • GET - 리소스 가져오기 (Read)
    • PUT - 리소스 업데이트 (Update)
    • DELETE - 리소스 삭제 (Delete)

 

 

 

REST API 특징

  • REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지 그 요청의 모습 자체로 추론이 가능하다는 것이다!
  • REST 기반으로 시스템을 분산하여 확장성과 재사용성을 높인다
  • HTTP 표준을 따르고 있어 여러 프로그래밍 언어로 구현할 수 있다

 

 


REST API 설계 규칙

1. URI는 정보의 자원을 표현해야 한다

  • 자원의 이름은 동사보다는 명사를 사용한다
  • URI는 자원을 표현하는데 중점을 두어야하기 때문에 행위에 대한 표현이 들어가면 안된다
  • 즉, URI에는 HTTP Method와 행위에 대한 동사 표현이 들어가면 안된다!
GET /users/123

 

2. 자원에 대한 행위는 HTTP Method로 표현한다

  • URI에 자원의 행위에 대한 표현이 들어가지 않는 대신 HTTP Method를 사용한다
GET /users/123   // 123번 유저의 정보 가져오기
DELETE /users/123   // 123번 유저 정보 삭제하기
POST /users  // ,새로운 유저 생성

 

3. 슬래시(/)는 계층 관계를 나타내는데 사용한다

http://restapi.test.com/users/rooms
http://restapi.test.com/users/board

 

4. URI 마지막은 슬래시(/)를 사용하지 않는다

http://restapi.test.com/users/rooms/ [X]
http://restapi.test.com/users/rooms [O]

 

5. 하이픈(-)은 URI의 가독성을 높이는데 사용한다

  • 불가피하게 긴 URI를 사용하게 될 경우 하이픈을 이용하여 가독성을 높인다

 

6. 언더바(_) 혹은 밑줄은 URI에 사용하지 않는다

  • 밑줄은 보기 어렵거나 밑줄 때문에 문자가 가려지기도 한다
  • 따라서 언더바 대신 하이픈을 사용한다

 

7. URI는 경로에는 소문자가 적합하다

  • URI는 경로에는 대문자 사용을 피해야 한다
  • 대소문자에 따라 각각 다른 리소스로 인식하기 때문이다!

 

8. 파일 확장자는 URI에 포함하지 않는다

  • REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다
  • Accept header를 사용한다

 

 

 


💡 REST와 HTTP의 차이

  • HTTP는 통신에 사용되는 응용 프로그램 프로토콜이고, REST는 일종으의 규칙이다
  • REST는 HTTP 기반으로 사용되는 통신 방식이다!

 

 

💡 REST API와 HTTP API의 차이

  • 사실상 HTTP API와 REST API는 거의 같은 의미로 사용되지만, 디테일하게 보면 다르다
  • HTTP API는 HTTP를 사용하여 서로 정해둔 스펙으로 통신하는 것이고, 보다 넓은 의미로 사용된다
  • REST API는 HTTP API에 여러가지 제약 조건이 추가된 것이다!
  • REST API의 제약조건 
    1. 자원의 식별
    2. 메시지를 통한 리소스 조작
    3. 자기 서술적 메시지
    4. 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어

 

 

 

 

 


참고 자료

https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces

 

API란? What is API? API 뜻, API 개발 방식, API 연동, Web API

API 뜻은 Application Programming Interface로서 응용프로그램과 운영체제의 통신을 쉽게 하는 연결 인터페이스이며, 개발 및 통합에 사용되는 프로토콜 세트를 뜻합니다.

www.redhat.com

https://unequaled-peach-7e5.notion.site/REST-API-fcf5290aefb94b27851f03fdf724083d

 

REST API

🌹 정리 by 장미(https://velog.io/@newbiekim/)

unequaled-peach-7e5.notion.site

https://dev-coco.tistory.com/97

 

REST란? REST API 와 RESTful API의 차이점

참고 REST(REpresentational State Transfer)란? REST의 정의 "REpresentational State Transfer" 의 약자로, 자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. 즉, 자원(

dev-coco.tistory.com

 

728x90

'야미스터디 > Network' 카테고리의 다른 글

[Network] HTTP 1, 2, 3 📌  (0) 2022.09.12
[Network] cast 📌  (0) 2022.09.02
[Network] Cookie vs Session 📌  (0) 2022.08.04
얄팍한 코딩사전 - REST API가 뭔가요?  (0) 2021.07.31
HTTP 완벽 가이드 - 1  (0) 2020.12.25

댓글