HTTP

[HTTP] RESTful

날아 2023. 1. 31. 04:15

1. REST - Representational State Transfer

  • 서버와 클라이언트 간 통신 방식 중 하나로, 자원을 이름으로 구분하여 자원의 상태를 주고받는다
  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)를 명시하고,
  • HTTP Method(POST, GET, PUT, DELETE, PATCH)등을 통해 
  • 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다. 

 

자원의 표현 
  • URI 
    • REST에서 자원을 구분하고 처리하기 위해 사용
    • URI를 잘 네이밍할수록 API가 직관적이고 사용하기 쉽다
    • ex) /books, /join
  • singleton and Collection Resources 
    • URI는 singleton이나 collection
    • /customer (singleton resource)
    • /customers (collection resource)
  • Collection and Sub-collection Resources
    • URI는 서브 컬렉션을 포함할 수 있다
    • 특정 고객의 계좌?
    • /customers/{customerId}/accounts

 

URI 네이밍 규칙
  • 명사를 사용해서 자원을 표현한다
    • /crews : 크루들의 정보 
  • 예외적으로 동사를 허용하는 경우 (controller)
    • /game/play에 접근 시 게임이 시작된다면?
    • 게임의 시작 여부를 컨트롤하는 URI
    • 동사 play로 표현
  • 자원 간 계층 관계를 표현하기 위해 / (슬래시) 사용
    • /crews/frontend
  • 하이픈 (-) 기호를 사용하여 URI의 가독성을 향상할 수 있다.
    • /profilemanagement (X)
    • /profile-management (O)
  • URI에는 가급적 밑줄을 사용하지 않는다. (_)
  • URI는 소문자를 사용한다.
  • URI에는 파일 확장자를 표시하지 않는다. 
  • URI에 CRUD 함수의 이름을 사용하지 않는다. 
    • /create/crews (X)
    • /add/crews (X)
    • HTTP 메서드를 사용하면 된다!

 

HTTP 메서드 - 자원의 상태를 주고 받기 위해 사용하는 메서드 
  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

URI에 CRUD 함수의 이름을 사용하지 않는것을 권장한다. 그렇다면 어떻게 표현할까?

  • 유저 리스트를 얻어오고 싶다면?
    • /users + HTTP 메서드 GET
  • 유저 리스트에 등록하고 싶다면?
    • /users + HTTP 메서드 POST
  • 같은 URI 사용 + 다른 동작(메서드)
  • CRUD 메서드의 이름을 URI에 표현하지 않을 수 있다. 

 

CRUD Operation

CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로 REST에서의 CRUD Operation 동작 예시는 아래와 같다.

  • Create : 데이터 생성 (POST)
  • Read : 데이터 조회 (GET)
  • Update : 데이터 수정 (PUT, PATCH)
  • Delete : 데이터 삭제 (DELETE)

 

REST 특징
  • 서버-클라이언트 구조 
  • 무상태 (stateless)
  • 캐시 처리 가능
  • 계층화 
  • 인터페이스 일관성 

 

REST의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해준다.
  • HTTP 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.

단점

  • 표준 자체가 존재하지 않아 정의가 필요하다.
  • HTTP Method 형태가 제한적이다.
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다. (익스플로어)

 

RESTful
  • RESTful이란 REST의 원리를 따르는 시스템을 의미한다.
  • 하지만 REST를 사용했다고해서 모두가 RESTful 한 것은 아니다.
  • 모든 CRUD 기능을 POST로 처리하는 API 혹은 URI 네임 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못할 뿐더러 RESTful하지 못한 시스템이라고 할 수 있다. 

 

 

출저

인프런 강의  모든 개발자를 위한 HTTP 웹 기본 지식 (김영한 강사님)

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

'HTTP' 카테고리의 다른 글

[HTTP] 암호화와 HTTPS  (0) 2023.01.31
[HTTP] 트랜스포트 계층  (0) 2023.01.31
[HTTP] 네트워크 서비스와 애플리케이션 계층  (0) 2023.01.30
[HTTP] 컴퓨터 네트워크  (0) 2023.01.30