개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
2월 18일(금)
HTTP method
GET
- HTTP GET method는 서버로부터 정보를 조회하기 위해 설계된 메소드이다.
- GET method는 요청을 전송할 때 필요한 데이터를 body에 담지 않고, 쿼리스트링을 통해 전송한다.
- 쿼리스트링은 URL 끝에서 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 말한다. (만약 요청 파라미터가 여러개이면 &로 연결함)
- 예를 들면, www.unpasoadelante.tistory.com/resources?name1=value&name2=value 의 쿼리스트링을 포함한 URL에서 요청 파라미터명은 name1과 name2이고, 각각의 파리미터값은 value1과 value2가 된다.
- GET method는 불필요한 요청을 제한하기위해 요청이 캐시될 수 있다. (js, css, 이미지 같은 정적 컨텐츠는 데이터양이 크고 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없음)
POST
- HTTP POST method는 리소스를 생성 및 변경하기 위해 설계된 메소드이다.
- 그렇기 때문에 GET method와 달리 POST method는 전송해야될 데이터를 HTTP request의 body에 담아 전송한다.
- 또한, HTTP 요청으로 보내는 body 길이는 제한이 없기 때문에 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있다.
- 그리고 POST로 요청을 보낼 때에는 요청 헤더의 Content-Type에 요청 데이터 타입을 표시해야 한다.
- 만약, 데이터 타입을 표시하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추하며 알 수 없는 경우에는 application/octet-stream으로 요청을 처리한다.
- 참고로, POST method는 데이터가 body로 전송되고 내용이 눈에 보이지 않아 GET method 보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST 요청도 크롬 개발자도구에서 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해서 전송을해야 한다.
GET과 POST의 차이점
- GET method는 idempotent, POST method는 Non-idempotent하게 설계되었다.
- idempotent(멱등)은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나야 함을 의미한다.
- 여기서 GET이 idempotent하게 설계되었다는 것은 GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 함을 의미한다.
- 이에 따라 GET은 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 하기 때문에 주로 데이트를 조회할 때 사용된다.
- 반대로 POST는 Non-idempotent 하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다르게 돌아온다.
- 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용된다. (ex. 게시글 저장, 게시글 삭제 등)
- 이처럼 POST는 생성, 수정, 삭제에 사용할 수 있지만 생성에는 POST, 수정은 PUT 또는 PATCH, 삭제는 DELETE가 더 용도에 맞는 메소드라고 할 수 있다.
'기타' 카테고리의 다른 글
TIL - 22.02.22 (0) | 2022.02.22 |
---|---|
TIL - 22.02.21 (0) | 2022.02.21 |
TIL - 22.02.17 (0) | 2022.02.17 |
TIL - 22.02.16 (0) | 2022.02.16 |
TIL - 22.02.15 (0) | 2022.02.16 |
댓글