HTTP 메소드인 GET과 POST는 데이터를 전달한다는 점은 같다.
중요한 건 언제 GET 방식을 쓰고 언제 POST 방식을 쓰냐는 것이다. 전달할 데이터의 길이가 길 때는 대체로 POST 방식을 쓰지만, 그렇지 않을 때는 고민이 필요하다.
물론 경우에 따라 데이터의 길이가 길어도 GET을 써야 할 경우도 있을 것이(지만 나는 그런 경우가 있는지 모르겠)다.
기본적으로 이름에 따라 그 의미를 생각하면 된다. GET은 가져온다는 의미를 포함하고, POST는 보낸다는 의미를 포함한다.
즉 GET 방식은 서버에 값을 전달해 데이터를 가져오고, POST 방식은 서버에 값을 전달해 서버의 정보를 수정한다고 볼 수 있다.
SQL 문으로 보면 (다소 억지스럽지만) GET은 SELECT 문, POST는 UPDATE 문에 비유할 수 있다.
1. 전달 형태
GET: URL에서 ? 뒤에 이름=값 형태로 전달된다. Ex) www.example.com?page=3&num=1
POST: HTTP Body에 포함되어 전달된다.
앞에서 언급한 의미로 생각하면, GET 방식은 서버에 page 값을 전해 page에 맞는 데이터(게시글)을 가져온다고 볼 수 있다. 게시글을 작성할 때는 POST 방식이 사용되는데, 이는 게시글을 작성함으로써 서버의 DB에 저장된 게시글의 정보가 수정되기 때문이다.
2. 길이 제한
GET: (상대적으로) 짧다 -> 많은 양의 데이터를 보내기에 부적합하다.
POST: (상대적으로) 길다 -> 많은 양의 데이터를 보내기에 적합하다.
3. 기능
GET: 서버에 값을 전달하고 그 값에 따른 데이터를 서버에서 가져온다.
POST: 서버에 값을 전달해 서버의 데이터를 수정한다.
앞서 든 예시로, GET 방식으로는 페이지 번호를 전달하고, POST 방식으로는 게시글을 전달한다.
전자의 경우 페이지 번호를 서버에 전달하고 그 페이지 번호에 따른 페이지 정보를 서버에서 읽어오는 것이고, 후자의 경우 게시글 데이터를 서버에 전달해 서버의 DB 정보를 수정하는 것이다.
물론 100% 그렇다고 할 수는 없겠으나 기본적으로는 그렇다. 사실 이게 가장 핵심적인 차이점.
여담으로 GET은 URL에 그대로 노출되고 POST는 그렇지 않기 때문에 보안 상 유리하다는 말도 있으나, 약간의 수고가 필요할 뿐 얼마든지 해킹이 가능하다. 따라서 POST가 보안 상 유리하다는 것은 완전히 틀리다 할 수는 없겠으나 보안 상 이점이 있다고 하기에는 민망한 수준이다.
'Programming > Web' 카테고리의 다른 글
[게시판] 게시글 수정 (0) | 2019.07.17 |
---|---|
[게시판] 게시글 작성 (0) | 2019.07.16 |
[게시판] 회원가입 (0) | 2019.07.16 |
[게시판] DB 연결, 로그인 세션 설정 + 로그인 (0) | 2019.07.12 |
[게시판] 데이터베이스 설계 (0) | 2019.07.12 |