[Network] Http methods : GET과 POST

2022. 3. 29.공부/네트워크

728x90

사용자가 URL을 입력하면 웹 클라이언트가 웹 서버에게 URL을 요청하고, 웹 서버는 화면 구성에 필요한 파일을 전달한다. 이 웹 서버는 비대해질 시 WAS(JSP)와 프론트(HTML, CSS, JS) 서버로 분리된다. 이벤트가 발생되면 클라이언트는 필요한 시점에 백엔드 서버에게 API를 요청한다. API는 DB와 통신한 후 적절한 정보를 클라에게 응답한다. 

 

HTTP Method로 API 통신을 할 수 있다는 것은 알겠는데, CRUD의 관점에서 Create에 해당하는 메소드가 GET, Read에 해당하는 메소드가 POST인 것도 알겠는데.. 언제 GET을 쓰고 언제 POST를 써야하지?라고 생각해보면 답을 낼 수가 없었다. 앞으로 더 알아가봐야겠지만, 수업 내용을 나름의 스토리를 붙여 정리해본 것이 아래와 같다. 

 

GET : 데이터 전달 방식 1

1) 클라에서 서버에 있는 리소스를 가져올 때 사용한다. 

2) 백엔드 서버의 DB에 변동이 일어나지 않을 때 사용한다. (어디에서 요청을 해도 동일한 결과를 반환해야 한다)

3) 전송했던 데이터가 브라우저의 히스토리에 접속했던 주소와 함께 남아 있어 보안성에 취약하다.

4) 전송 데이터가 주소에 붙는다.

 

POST : 데이터 전달 방식 2

1) 클라에서 서버에 데이터를 전송할 때 사용한다. 

2) HTML form 태그가 반드시 필요 

3) 한글 데이터일 경우 UTF-8로 변환시켜서 전송해줘야 안 깨진다. ex. request.setCharacterEncoding("utf-8");

3) 브라우저에 전달되는 데이터가 남지 않아서 보안성에 강하다.

4) 전송하는 데이터가 주소에 붙지 않고, 전송 객체의 메시지 바디를 통해 전달된다.

 

[추가] MVC와 Rest API 개발의 차이

MVC : 대표적으로 JSP 개발 - 파일의 경로를 문자열 타입으로 반환한다.

REST API : 대표적으로 React 개발 - API를 JSON타입으로 반환하는 과정을 거침