본문 바로가기

컴퓨터 과학(CS)/네트워크

HTTP Method 간단 정리

Rest 란??

 

 

Rest는 굉장히 난해한 개념입니다. 정리를 하자면 아래와 같습니다.

HTTP URI를 통해 자원을 표시하고 HTTP Method를 통해 자원에 대한 처리를 표현합니다. 사람이 읽을 수 있는 API라는 것이 특징입니다. HTTP를 사용하기 때문에 HTTP의 특성을 그대로 반영합니다. 또한, 별도의 인프라 구축도 필요없습니다.

 

단점으로 명확한 표준이 존재하지 않는다 점, Restful을 완전히 만족하는 API를 만들기는 매우 까다롭다는 점. Rest API 가 분산환경에 적합하지 않다는 점이 있습니다.(멱등성을 보장하기 힘들기 때문)

 

연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성(idempotence) 이라 한다.

 

Rest 특징

 

1. Server-Client 구조

Server : 자원이 있다. Client : 자원을 요청

 

2. Stateless (무상태)

Client의 Context를 Server에 저장하지 않는다.

Server는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.

 

3. Cacheable ( 캐시 처리 가능 )

웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다.

 

4. Layerd System ( 계층화 )

Client는 REST API Server만 호출한다. 

PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용할 수 있다.

 

5. Code-On-Demane(optional)

Server로 부터 스크립트를 받아 Client에서 실행한다.

 

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

 

 

HATEOAS 라는 개념이 있는데, 동적인 API를 제공할 수 있게 됩니다.(모든 관련된 동작을 URI를 통해 알려줍니다.) 즉, 클라이언트가 API의 변화에 일일이 대응하지 않아도 된다는 장점을 가져옵니다.)

 

 

 

HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다.

간혹 요청 메서드를 "HTTP 동사"라고 부르기도 합니다.

각각의 메서드는 서로 다른 의미를 구현하지만, 일부 기능은 메서드 집합 간에 서로 공유하기도 합니다.

 

HTTP 메소드 종류는 총 9가지가 있다. 이 중 주로 쓰는 5가지의 종류와 특징을 정리해보자.

나머지 4가지는 OPTIONS, HEAD, TRACE이며,

OPTIONS는 해당 uri에 대해 서버가 허용하는 메서드를 확인할 떄 사용합니다.

HEAD는 GET과 비슷하나 header만 가져옵니다.

 

 

 

GET

서버에 존재하는 정보를 요청합니다. 이 떄 반환되는 정보는 자체가 아니라 정보의 표협입니다.

일반적으로 Request body는 입력하지 않는 것이 일반적이며, 레거시 시스템의 경우 요청을 받아들이지 않을 수 있습니다.

캐싱을 수행하기 때문에 캐싱되지 않는 요청은 GET 요청이 맞지 않을 수 있습니다.

CRUD로 따지만 R에 해당합니다.

 

 

POST

 

서버에 정보를 생성하는 것을 요청합니다. 예전 HTTP  통신은 POST 요청으로 데이터 삭제, 수정도 form요청으로 같이 수행했습니다. POST 요청은 서버의 상태를 변경시키기 때문에 역동성이 유지되지 않습니다. 보통 Request Body에 요청하는 데이터를 담아 전송합니다.

CURD로 따지면 C입니다.

 

PUT

 

서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성합니다. CRUD로 따지면 C, U입니다.

 

DELETE

 

서버에 데이터를 제거할 것을 요청합니다. 존재하지 않아도 동일하게 동작합니다. CRUD로 따지면 D입니다.

 

PATCH

 

서버에 존재하는 데이터를 일부 수정합니다. CRUD에서 U에 해당합니다. 

 

더 나아가서 불필요한 메서드는 허용하지 않고 필요한 메서드만 허용하는 Whitlist 방식으로 관리합니다.

 

 

'컴퓨터 과학(CS) > 네트워크' 카테고리의 다른 글

TCP와 UDP는 무엇인가?  (0) 2022.06.20