HTTP 요청 메소드
URL을 이용하면 서버에 특정 데이터를 요청할 수 있다.
여기서 요청하는 데이터에 특정 동작을 수행하고 싶으면 HTTP 요청 메소드(Http Request Methods)를 이용한다.
일반적으로 HTTP 요청 메서드는 HTTP Verbs라고도 불리우며 아래와 같이 주요 메서드를 갖고 있다.
- GET : 존재하는 자원에 대한 요청
- POST : 새로운 자원을 생성
- PUT : 존재하는 자원에 대한 변경
- DELETE : 존재하는 자원에 대한 삭제
GET방식
클라이언트에서 서버로 어떠한 리소스 정보를 요청하기 위해(데이터를 읽거나 검색할때) 사용되는 메서드
GET은 요청을 전송할 때 필요한 데이터를 쿼리스트링을 통해 전송한다.
URL의 끝에 ? 와 함께 이름과 값으로 상을 이루는 요청 파라미터를 쿼리스트링이라고 부른다.
쿼리스트링을 사용하면 URL에 조회 조건을 표시하기 때문에 특정 페이지를 링크하거나 북마크할 수 있다.
www.example-url.com/resources?name1=value1&name2=value2
- 만약, 요청 파라미터가 여러 개면 &로 연결한다.
- 요청 파라미터명은 nam1, nam2
- 각각의 파라미터는 value1, value2라는 값으로 서버에 요청을 보낸다.
GET은 불필요한 요청을 제한하기 위해 요청이 캐시가 될 수 있다.
JS,CSS같은 정적 컨텐츠는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가없다.
정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시로해두고,
동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용한다.
그래서 프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시돼 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생한다.
이 때는 브라우저의 캐시를 지우고 다시 컨텐츠를 조회하면 된다.
- GET 요청은 캐시가 가능하다.
- :GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신
리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다. - GET 요청은 브라우저 히스토리에 남는다.
- GET 요청을 북마크에 추가할 수 있다.
- GET 요청은 길이 제한이 있다.
- GET 요청은 중요한 정보를 다루면 안된다. (파라미터 내용이 노출돼서)
- GET 요청은 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.(데이터의 변형 위험 없이 사용가능)
POST방식
리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는 메서드
데이터를 HTTP 메세지의 Body에 담아서 전송한다.(길이의 제한 없음)
크롬 개발자 도구로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우 반드시 암호화해 전송해야한다.
POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야한다.
데이터 타입을 표시하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추한다.
만약, 알 수 없는 경우에는 application/octet-stream로 요청을 처리한다.
- POST 요청은 캐시되지 않습니다.
- POST 요청은 브라우저 기록에 남아 있지 않습니다.
- POST 요청을 북마크에 추가할 수 없습니다.
- POST 요청에는 데이터 길이에 대한 제한이 없습니다.
- Post 요청 중 자원 생성은 201(Created) HTTP 응답 코드를 반환합니다.
GET과 POST에 차이점

GET | POST | |
캐시 | ⭕️ | ❌ |
브라우저 기록 | ⭕️ | ❌ |
북마크 추가 | ⭕️ | ❌ |
데이터 길이 제한 | ⭕️ | ❌ |
HTTP 응답 코드 | 200(Ok) | 201(Created) |
언제 주로 사용하는가? | 리소스 요청 | 리소스 생성 |
리소스 전달 방식 | 쿼리스트링 | HTTP Body |
idempotent | ⭕️ | ❌ |
idempotent(멱등성)란??
연산을 여러번 적용하더라도 결과가 달라지지 않는 성질
즉, 멱등이라는 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야 한다.
GET으로 서버에 동일한 요청을 여러번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미한다.
따라서 GET은 서버의 데이터나 상태를 변경시키지 않아야한다.
예) 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위를 GET으로 요청하게 된다.
POST는 서버의 상태나 데이터를 변경시킬 때 사용
출처