[Spring Boot] Ajax 사용하는 이유
회원가입 시 Ajax를 사용하는 이유
요청에 대한 응답을 HTML이 아닌 Data(JSON)로 받기 위해서
클라이언트 (브라우저)는 서버에 요청을 하고, 서버는 클라이언트에게 응답한다.
클라이언트가 서버에게 화면을 요청하면, 서버가 .html로 응답하여 브라우저는 그 html 파일을 읽는다.
메인화면에서 회원가입 수행을 요청하면, 서버는 DB에 회원가입을 수행하고 완료하면 다시 메인화면으로 돌아올 것이고, 결국 html로 응답해줘야하는데…
그 클라이언트가 꼭 브라우저인 것은 아니다. 앱일 경우, html를 반환해주면 이해하지 못한다.
그래서 Data만 반환해주고, 화면을 앱안에서 자체적으로 띄운다.
➡ 브라우저를 위한 서버, 앱을 위한 서버 두개를 따로 만들어야하지만, 차라리, Data를 반환해주는 서버 하나를 만들면 되지 않을까…
서버는 브라우저/앱에게 정상이라는 Data를 반환해준다.
브라우저는 다시 서버에서 request를 보내 html파일을 반환하게 한다.
앱은 자체적으로 화면이동을 한다.
그래서 Data를 Ajax를 사용한다.
비동기 통신을 하기 위해서
보통 일을 수행할 때 1, 2, 3, 4, 5, … 순서대로 실행-종료,실행-종료… 절차적으로 수행한다.
그리고 1: 화면에 그림(내장), 2: 연산, 3: 그림 다운로드(외장), 4: 그림을 그림, 5: 화면에 그림(내장) 이라는 상황일 때, 1,2번이 수행되고, 3번 다운로드하는 10초 pending동안 앱은 멈춰있을 것이다.. 10초 다운로드가 끝나면 4,5번이 수행된다. 이 결과 UX가 나빠진다. 프로그램을 사용하고 싶지 않을 듯
비동기 통신은 절차적으로 일을 수행하는데, 일의 순서에 상관없이 수행한다.
1,2 수행하고, 3번을 비동기 처리하고 4번은 3번이 수행되어야 동작할 수 있기때문에, 5번을 수행하고 있는다.
3번 다운로드하는 동안 4번은 3번을 기다리고, 5번 그림 그리기 수행
- 5번 수행중 3번이 완료되면 4번으로 콜백한다. 4번이 완료되면 5번 멈췄던 지점부터 다시 시작한다.
- 5번이 끝난 후에 3번이 완료되면 4번으로 돌아간다.
➡ 비동기라고 한다.
[Spring Boot] Ajax 사용하는 이유