GET
- 서버로부터 정보를 조회하기 위한 메소드
- 요청 시 데이터와 함께 요청하기 위해서는 body가 아닌 쿼리스트링을 통해 전송한다
- 불필요한 요청을 제한하기 위해 캐시될 수 있다.
- js, css, 이미지 등의 데이터는 크기가 크고, 변경될 일이 적어서 캐시된 데이터를 사용한다.
POST
- 리소스를 생성/변경하기 위한 메소드
- 데이터를 body에 담아 전송, 길이의 제한없이 데이터를 전송할 수 있어 대용량 데이터를 전송할 수 있음
- 데이터가 눈에 보이지 않아 안전하다고 판단할 수 있으나, 개발자 도구 등으로 body를 확인할 수 있으므로, 민감한 정보는 암호화하여 전송해야 된다
- 헤더에 Content-type을 표시해야 한다. 표시하지 않으면, 내용이나 URL에 포함된 리소스의 확장명으로 데이터 타입을 유추한다. 알 수 없는 경우
application/octet-stream
로 처리
GET, POST 차이
- GET은 Idempotent(멱등), POST는 Non-idempotent(멱등이 아님)하게 설계되었다.
- Idempotent
수학이나 전산학에서 연산의 한 성질을 나타내는 것, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
- 즉, GET은 동일한 요청을 보내면, 동일한 응답이 돌아와야 한다.
- GET은 서버의 데이터나 상태를 변경시키지 않아야 하기 때문에, 주로 조회할 때 사용해야 한다.
- 반대로, POST는 서버에 동일한 요청을 보내도, 응답이 다를 수 있다.
- POST는 서버의 상태나 데이터를 변경시킬 때 사용
RESTful API을 위해서는 GET, POST 이외에도 PUT, PATCH, DELETE 등의 메소드를 필요에 맞게 잘 사용해야 한다. RESTful API에 대해서는 따로 글을 작성해봐야겠다!
출처 :