devops

HTTP 메소드와 HTTP STATUS CODE 정리 본문

DevOps

HTTP 메소드와 HTTP STATUS CODE 정리

vata500 2022. 4. 26. 17:11
반응형

HTTP의 메소드와 CRUD(create/read/update/delete)를 적절하게 짝짓고, POST와 PUT의 차이점을 설명

  • GET : 리소스 조회 - read
  • POST : 요청 데이터 처리, 주로 데이터 등록에 사용 - create
  • PUT : 리소스를 대체, 해당 리소스가 없으면 생성 - create 
  • PATCH : 리소스를 일부만 변경 - update
  • DELETE : 리소스 삭제 - delete
  • HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

주요 메소드 5개 세부 설명

GET은 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다.

POST는 데이터 요청을 처리하고, 메시지 바디를 통해 서버로 데이터를 전달한다. 주로 신규 리소스를 등록하거나 프로세스 처리에 사용된다.

PUT은 리소스가 있으면 대체하고 리소스가 없으면 생성한다. 쉽게 말해 데이터를 덮어쓴다.

PATCH는 PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 수 있다.

DELETE는 리소스를 제거할때 사용한다.

POST와 PUT의 차이

POST vs PUT / https://stackoverflow.com/questions/630453/what-is-the-difference-between-post-and-put-in-http

(우체국에서 우편물을 보낸다 vs 원래 있던 위치에 가져간다.)
(새 게시물이 생성된다. vs 우리가 이미 게시한 메시지를 편집한다.)

POST는 리소스를 업데이트하거나, 보조 리소스를 추가하거나 변경할 때 사용한다. POST는 x++ 방식이라고 이해하면 된다.

PUT은 리소스를 넣는 것을 의미. 주어진 URL에서 사용할 수 있는 모든 것을 다른 것으로 완전히 대체한다. 정확히 PUT은 'x=5' 멱등수다.

+ HTTP method들 GET, POST, PUT, DELETE 중 POST를 제외하고는 모두 멱등성이 보장되어야한다.
멱등성이란 '요청의 효과'를 보고 판단하는 것. 멱등성이 유지되어야 하는 경우는 같은 행위를 여러번 반복해도 같은 효과를 가져야한다.

즉, 서버의 상태가 멱등성이 유지되어야 한다는 의미는 여러 번 요청(Request)을 하더라도 요청에 의한 서버의 상태는 항상 같다.

POST /data

POST 요청을 반복하면 데이터들은 계속해서 추가하게 되고, 그 때 마다 서버의 응답은 다른 응답을 나타내며 다른 효과를 보이게된다. (같은 내용이더라도 서로 다른 데이터)

PUT /data3

PUT 요청으로 3번째 Data를 수정한다고 한다. 3번 데이터가 없는 경우 데이터가 생성될 수 있다. 이미 존재한다면, 데이터는 수정된다. 이럴 경우 여러 번 실행되더라도 3번째 Data는 요청한 그 값으로 수정된 항상 같은 상태일 것이다.

(아래 출처)

 

HTTP 메소드의 멱등성? 그게 뭔데?

멱등성이 무엇인지 알고계신가요? 멱등성이란, 수학에서 사용하는 용어에서 유래한 것으로. 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 뜻합니다.이 멱등성은 왜 HTTP Method와 연

velog.io

 

PUT vs PATCH

PUT 리소스의 모든 것을 업데이트한다. PATCH 리소스의 일부를 업데이트한다.

가령 한 사용자에 대해 여러 정보를 객체로 수집하여 서버로 보내는 경우, PUT은 보내지지 않은 정보에 대해서는 null값으로 업데이트하지만, PATCH는 기존 데이터를 유지하는 방식으로 대응한다.

아래와 같은 리소스가 있다.

- 이름 : 데브옵스
- 나이 : 20세
- 성별 : 남자

아래 요청을 PUT과 PATCH로 한다면,

이름 : 안드로이드
나이 : 5세

PUT의 결과 PATCH의 결과
- 이름 : 안드로이드
- 나이 : 5세
- 성별 : null
- 이름 : 안드로이드
- 나이 : 5세
- 성별 : 남자

 

HTTP 응답 코드의 200, 300, 400, 500번대의 특징과 차이점을 설명

- 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다

이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.

- 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다.

클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.

- 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다

4xx 클래스의 상태 코드는 클라이언트에 오류가 있음을 나타낸다.

- 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다

서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

 

반응형
Comments