코딩

[HTTP] GET 그리고 POST

lwz7 2024. 8. 22. 21:59

 

GET 방식과 POST 방식은 웹에서 가장 많이 사용되는 HTTP 요청 메서드입니다. 이 두 메서드는 각각의 용도에 따라 클라이언트와 서버 간의 데이터 교환 방식을 정의합니다. 이번 포스팅에서는 GET 방식과 POST 방식의 정의와 특징을 살펴보고, CRUD와의 연관성을 통해 웹에서 이 메서드들이 어떻게 사용되는지 알아보겠습니다.

 

GET

 

GET 방식은 클라이언트가 서버로부터 데이터를 조회할 때 사용하는 HTTP 메서드입니다. 요청하는 데이터는 URL의 쿼리스트링을 통해 전달됩니다.

 

  • http://example.com/search?query=django&category=python
    • 위 예시에서 query=djangocategory=python은 GET 요청을 통해 서버로 전달되는 데이터입니다.

 

GET 방식은 도서관에서 책을 찾는 것에 비유할 수 있습니다. 도서관 사서에게 책의 제목이나 저자 정보를 전달하면 사서가 해당 책이 어디에 있는지 알려주는 것과 비슷합니다.

 

  • 특징:
    • URL에 데이터가 포함됨: 요청 데이터가 URL에 그대로 포함되기 때문에 브라우저 주소창에 노출됩니다.
    • 데이터 길이 제한이 있음: URL에 포함되는 데이터의 길이는 브라우저와 서버에 따라 제한이 있습니다.
    • 보안 취약성: 데이터가 URL에 노출되므로, 민감한 정보를 GET 방식으로 전달하는 것은 권장되지 않습니다.
    • CRUD(Create, Read, Update, Delete)와의 연관성
      • Read (읽기): GET 방식은 주로 서버에서 데이터를 조회(읽기)할 때 사용됩니다. 예를 들어 사용자가 웹사이트에서 어떠한 목록을 조회하거나, 블로그 글을 읽을 때 GET 요청이 사용됩니다.

 

POST

 

POST 방식은 클라이언트가 서버에 데이터를 제출할 때 사용하는 HTTP 메서드입니다. 주로 폼 데이터를 제출하거나 서버에 새로운 데이터를 생성할 때 사용됩니다.

 

 

POST 방식은 택배에 비유할 수 있습니다. 택배 상자 안에 물건을 넣으면, 외부에서는 택배의 내용물을 볼 수 없습니다. 택배를 받는 사람만이 상자를 열어 그 내용을 확인할 수 있듯이, POST 방식은 데이터가 외부에 노출되지 않고 안전하게 전달됩니다. (물론 현실의 택배 상자의 겉에는 송장이 부착되어 정보가 노출되지만, 여기서는 이해를 위해 그러한 정보 노출이 없다고 가정하겠습니다.)

 

  • 특징:
    • URL에 데이터 미포함: POST 요청은 데이터가 본문(Body)에 포함되기 때문에 URL에 노출되지 않습니다.
    • 데이터 길이 제한이 없음: POST 요청에서는 데이터 길이에 제한이 없으며, 대량의 데이터를 전송할 수 있습니다.
    • 상대적으로 안전: URL에 데이터가 포함되지 않으므로 GET 방식에 비해 상대적으로 안전합니다.

 

  • 사용 사례:
    • 로그인, 회원가입 : 사용자가 로그인 정보나 회원가입 데이터를 제출할 때 POST 요청이 사용됩니다.
    • 파일 업로드 : 파일(예: 사진, 동영상, 문서)을 서버로 업로드할 때 POST 요청이 사용됩니다.
    • 폼 제출 : 게시글 작성, 댓글 작성, 설문조사 응답 등의 데이터를 제출할 때 사용됩니다.
    • JSON 데이터 전송: RESTful API를 이용해 클라이언트와 서버 간에 JSON 형식의 데이터를 주고받을 때 `POST` 방식을 자주 사용합니다. 예를 들어 클라이언트가 서버에 새 게시물을 생성하거나 사용자 정보를 업데이트할 때 JSON 형식으로 데이터를 `POST` 요청의 본문에 포함하여 전송합니다.
    • CRUD와의 연관성
      • Create (생성): 새로운 데이터를 서버에 추가할 때 사용됩니다. 예를 들어, 사용자가 새로운 블로그 글을 작성하거나 회원가입할 때 POST 요청을 통해 서버에 데이터를 전송합니다.
      • Update (수정): 기존 데이터를 수정할 때도 POST 요청이 사용될 수 있습니다. 예를 들어 사용자가 자신의 프로필 정보를 수정할 때 POST 요청을 통해 변경된 데이터를 서버로 전송합니다.

 

요약

 

  • GET 방식: 서버가 이미 가지고 있는 데이터를 조회할 때 사용. 주로 Read 작업에 해당.
  • POST 방식: 서버에 새로운 데이터를 제출하거나 기존 데이터를 수정 할 때 사용. 주로 Create, Update 작업에 해당.

 


 

이번 포스팅에서는 GET과 POST 방식, 그리고 CRUD와의 연관성에 대해 알아보았습니다. 하지만 본문에서 아직 다루지 않은 개념인 DELETE 가 남아 있습니다. 다음 포스팅에서는 DELETE와 PUT 메서드, 그리고 멱등성(idempotent)에 대해 알아보겠습니다.