REST로 개발할 때 모든 요청과 응답을 ajax를 사용하여 전송해야하나요?
아니면 필요한 부분만 ajax로 데이터를 전송하고 간단한 부분은 form 태그 같은 다른 방법으로 데이터를 전송하는지 궁금합니다 . 또, ajax를 사용한다면 어떤 상황에서 ajax를 쓰는지 궁금합니다. 개인 프로젝트 REST로 설계하려고 하는데 ajax를 언제 써야하는지 헷갈리네요.
AJAX가 왜 생겼는지, 다른 사이트들은 어느화면에서 사용하는지를 보시면 답은 간단합니다.
다음은 위키에서 추출한 ajax 의 간단한 설명입니다.
중요한 부분만 따로 굵음 처리 해드릴게요~
기존의 웹 애플리케이션은 브라우저에서 폼을 채우고 이를 웹 서버로 제출(submit)을 하면 하나의 요청으로 웹 서버는 요청된 내용에 따라서 데이터를 가공하여 새로운 웹 페이지를 작성하고 응답으로 되돌려준다. 이때 최초에 폼을 가지고 있던 페이지와 사용자가 이 폼을 채워 결과물로서 되돌려 받은 페이지는 일반적으로 유사한 내용을 가지고 있는 경우가 많다. 결과적으로 중복되는 HTML 코드를 다시 한번 전송을 받음으로써 많은 대역폭을 낭비하게 된다. 대역폭의 낭비는 금전적 손실을 야기할 수 있으며 사용자와 대화(상호 반응)하는 서비스를 만들기 어렵게도 한다.
반면에 Ajax 애플리케이션은 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다. 웹 서버에서 전적으로 처리되던 데이터 처리의 일부분이 클라이언트 쪽에서 처리 되므로 웹 브라우저와 웹 서버 사이에 교환되는 데이터량과 웹서버의 데이터 처리량도 줄어들기 때문에 애플리케이션의 응답성이 좋아진다. 또한 웹서버의 데이터 처리에 대한 부하를 줄여주는 일이 요청을 주는 수많은 컴퓨터에 대해서 일어나기 때문에 전체적인 웹 서버 처리량도 줄어들게 된다.
장점
페이지 이동없이 고속으로 화면을 전환할 수 있다.
서버 처리를 기다리지 않고, 비동기 요청이 가능하다.
수신하는 데이터 양을 줄일 수 있고, 클라이언트에게 처리를 위임할 수도 있다.
단점
Ajax를 쓸 수 없는 브라우저에 대한 문제가 있다.
HTTP 클라이언트의 기능이 한정되어 있다.
페이지 이동없는 통신으로 인한 보안상의 문제
지원하는 Charset이 한정되어 있다.
스크립트로 작성되므로 디버깅이 용이하지 않다.
요청을 남발하면 역으로 서버 부하가 늘 수 있음.
동일-출처 정책으로 인해 다른 도메인과는 통신이 불가능하다.
편하게 생각하고싶으시면 화면 이동이 필요하다 > form 으로 전송
ex ) 회원가입 > 회원가입 완료 시 메인 홈페이지로 이동
화면이동이 필요없이 바로 서버로 제출한 값에 응답이 필요하다 > AJAX
ex) 회원가입을 할때 내가 가입할 아이디의 중복 여부를 체크한다 > 중복여부 체크 후 바로 사용가능한지 사용자에게 응답해줄때! 이럴때는 form 으로 화면 전환하고 새로운 정보를 받는것보다 AJAX를 사용하여 페이지 이동없이 바로 해당 아이디 중복여부를 알려주는게 좋습니다.
실제로 네이버, 카카오 등 대부분의 기업은 이미 이 방식을 사용합니다.