[네트워크] HTTP Method

opixxx·2024년 3월 7일
0

네트워트

목록 보기
4/14

이 글은 보초님 깃허브 레포를 참고해서 공부한 글입니다

HTTP Method 에 대해 설명해주세요

HTTP Method란?

클라이언트-서버 구조에서 요청과 응답 데이터를 전송하는 방식을 의미한다.
쉽게 말하면 클라이언트의 요청을 서버가 어떻게 수행해야 할지를 알려주는 것이다.

대표적으로 GET, POST, PUT, PATCH, DELETE 가 있다.

  • GET : 데이터 조회
  • POST : 데이터 생성
  • PUT : 데이터를 대체하
  • PATCH : 데이터 일부 수정
  • DELETE : 데이터 삭제

HTTP Method의 멱등성에 대해 설명해 주세요.

멱등성(Idempotence)

멱등의 사전적 정의는 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
이 의미를 생각하고 HTTP Method 의 멱등성을 설명해보면 여러번 동일한 요청을 보냈을 때, 서버에 미치는 결과가 달라지지 않는 것을 의미한다.
여기서 생각해야할 점은 멱등성은 리소스 관점에서 생각하는 것이다.

HTTP 메서드멱등성이유
GETO같은 요청을 N번 해도 같은 결과가 조회된다.
POSTX같은 요청을 N번 하면 새로운 리소스가 생성되거나 리소스의 상태가 달라져 결과가 달라질 수 있다.
PUTO같은 요청을 N번 해도 항상 요청 대상 리소스를 수정하여 동일한 상태로 만든다.
PATCHX기존 리소스에 응답을 추가하는 경우에도 PATCH 가 사용될 수 있으며, 이때 호출 결과가 달라질 수 있다.
DELETEO같은 요청을 N번 해도 항상 리소스가 없는 동일한 상태이다.

멱등성이 왜 필요할까?

시간 초과나 기타 일시적인 오류로 인해 정상적인 응답이 수신되지 않는 경우에서 판단을 위한 중요한 근거가 되기 때문이다.

GET과 POST의 차이는 무엇인가요?

GET : 데이터를 읽다

  • URL 을 기반으로 데이터를 요구하는 방법이다.
  • URL 을 기반으로 하기 때문에 길이 제한(2000자미만)이 있다.
  • 성공시 HTTP 상태 코드 200을 반환한다.
  • 캐싱이 가능하다.
  • URL 을 기반으로 요청하기 때문에 해당 요청의 파라미터가 브라우저 기록에 남는다.
  • URL 을 기반으로 요청하기 때문에 요청할 때 ASCII 문자열 만을 보낼 수 있다.
  • 사용자 이름, 비밀번호 등 민감한 정보를 전달할 때 사용하지 않는다.

POST : 데이터를 생성하다.

  • URL 이 아닌 HTTP message body 를 통해 전달한다.
  • HTTP message body 를 통해 전달하기 때문에 길이 제한이 없다.
  • 성공적으로 데이터를 생성할 경우 HTTP 상태 코드 201 을 반환한다.
  • 캐싱이 불가능하다.
  • URL을 기반으로 요청하지 않기 때문에 해당 요청의 파라미터가 브라우저기록에 남지 
않는다.
  •  HTTP message body 로 요청하기 때문에 ASCII 문자열 뿐만 아니라 모든 유형의 
데이터를 기반으로 요청할 수 있다.
  •  사용자 이름, 비밀번호 등 민감한 정보를 전달할 때 사용합니다. 


GET, POST 의 차이점

  1. 사용 목적
  • GET : 데이터를 요청할 때
  • POST : 데이터를 생성할 때
  1. 요청 방법
  • GET : URL 을 기반으로 한다.
  • POST : HTTP message body 을 기반으로 한다.
  1. 멱등성
  • GET : 멱등이다
  • POST : 멱등이 아니다


POST와 PUT, PATCH의 차이는 무엇인가요?

POST는 주로 새 리소스를 생성할 때, PUT은 리소스의 전체를 업데이트하거나 새로 생성할 때, PATCH는 리소스의 일부만을 업데이트할 때 사용됩니다.
PUT과 PATCH의 주된 차이점은 PUT이 대상 리소스의 전체를 교체하는 반면, PATCH는 일부분만 수정한다는 점입니다.

HTTP 1.1 이후로, GET에도 Body에 데이터를 실을 수 있게 되었습니다. 그럼에도 불구하고 왜 아직도 이런 방식을 지양하는 것일까요?

GET 요청을 브라우저 기록에 남기 때문에 body 에 민감한 데이터가 포함될 경우 보안의 문제가 생길 수 있다.
그리고 body 는 일반적으로 서버로 전송되어 처리될 데이터와 관련이 있기 때문에 의미의 명확성을 위해서 POST 나 PUT 요청의 의미와 더 잘 일치한다.

profile
개발공부저장소

0개의 댓글

관련 채용 정보