오늘도 네트워크 공부!
참고 사이트 : w3schools
클라이언트-서버 간 통신에서 어떤 동작을 수행할 지 나타내는 명령
연산을 반복 해도 결과가 달라지지 않는 성질
서버에서 특정 리소스를 조회해 가져오기 위한 용도
요청 URI로 식별된 리소스를 가져올 수 있도록 요구한다.
브라우저는 동일한 GET 요청에 대한 응답은 캐싱할 수 있다.
전달하려는 데이터는 주로 쿼리스트링(ex. /users?id=123)이나 Path Value(ex. /users/123)방식으로 전한다. URL에 파라미터가 노출되기 때문에 Body로 데이터를 전달하는 POST 방식에 비해 보안이 떨어진다.
현재는 GET 메서드도 Body를 사용해 데이터를 보낼 수는 있으나, 특정 클라이언트나 서버에서는 GET의 Body는 무시되는 경우가 있으니 권장하지는 않는다.
북마크가 가능하고, 요청시 파라미터가 브라우저 history에 남는다.
엔티티 전송/리소스 생성의 목적으로 사용된다.
간혹 PATCH가 불가능한 경우 수정의 목적으로도 사용된다.
Body를 통해 서버로 데이터를 전송하므로 GET과 다르게 메세지 길이에 제한이 없다.
쿼리 파라미터는 key-value 형식의 주로 JSON과 같은 포맷으로 보낸다.
POST도 조회가 가능하긴 하나 멱등성이 없어 여러번 수행 시 같은 결과를 보장하진 않는다. 그리고 GET은 캐싱을 이용하므로 조회에는 GET이 더 빠르다.
Body에 데이터를 보내기 때문에 데이터가 외부로 노출(ex.쿼리스트링)되지 않으므로 보안상 이점이 있다.
리소스 전체 수정(완전히 대체하는 개념, 덮어쓰기)에 사용된다.
부분 수정이 불가하다. 기존에 a,b가 있는데 c를 보내면 c로 완전히 대체된다.
클라이언트가 리소스를 식별할 수 있다. 클라이언트가 구체적인 리소스 위치를 아는 상태에서 URI를 지정한다.
멱등성을 지닌다.
리소스 부분 수정에 사용된다.
PUT 처럼 리소스 수정 역할은 맞지만, PATCH는 부분만 변경한다.
a,b가 있을때 b=c로 대체 후 요청하면 a,c로 변경된다.
멱등성 x.
PATCH를 지원하지 않는 서버가 있을 땐, POST를 사용한다.
리소스 삭제에 사용된다.
GET과 같은 이유로 body를 사용할 수는 있으나 권장되지 않는다.
헤더 정보를 요청하기 위해 사용된다.
GET과 유사하지만 서버는 응답으로 Body를 반환하지 않고 헤더만 반환한다.
그래서 일반적으로 응답 상태코드 확인 같은 검사 목적으로 사용된다.
요청 URI로 지정한 리소스가 제공하는 메소드를 알아내기 위해 사용된다.
예비 요청(본 요청 전 미리 검사용)에 사용되며, CORS 정책을 검사하기 위함이다.
클라이언트-서버 간 터널 설정을 위해 사용된다.
주로 HTTPS의 TLS/SSL 연결이나 프록시 서버 터널 설정에 사용된다.
네트워크 검사나 디버깅 문제 해결 목적으로 사용된다.
보안상의 문제도 있고, 현재는 거의 사용되지 않는다.
Web 서버에 접속해 통신을 되돌려 받는 루프백을 발생 시킨다.