Ajax(Asynchronous JavaScript And XML)
- 자바스크립트를 사용해서 비동기적으로(=사용자가 보고 있는 현재 화면에 영향을 미치지 않고 별도로 백그라운드에서 작업을 처리한다는 뜻) 리퀘스트를 보내고 리스폰스를 받는데 기반이 되는 기술들의 집합
- 웹 브라우저가 현재 페이지를 그대로 유지한 채로 서버에 리퀘스트를 보내고 리스폰스를 받아서, 새로운 페이지를 로드하지 않고도 변화를 줄 수 있도록 함
- 자바스크립트에서는 XMLHttpRequest 객체를 통해 Ajax 통신이 가능 하지만 fetch 함수나 axios 패키지를 사용해도 가능함
Request 메소드 부록
- PATCH: PUT과 달리 기존 데이터를 일부만 수정할 때 사용(PUT은 기존 데이터를 완전히 새로운 데이터로 덮어쓰기 때문에 body 형식이 동일해야 함)
- HEAD: GET과 비슷하지만 body 없이 head만 받음(메타 데이터로 앞으로의 작업에 대한 레이아웃을 결정할 때 사용)
비동기 통신
- 비동기 실행: 특정 작업을 시작(리퀘스트 보내기)하고 완벽하게 다 처리(리스폰스를 받아서 처리)하기 전에, 실행 흐름이 바로 다음 코드로 넘어가고, 나중에 콜백이 실행
- 동기 실행: 한번 시작한 작업은 다 처리하고 나서야, 다음 코드로 넘어가는 절차적 실행
javascript 비동기 함수들(fetch 이외)
- setTimeout: 특정 함수의 실행을 원하는 시간만큼 뒤로 미루기 위해 사용
- setInterval: 특정 콜백을 일정한 시간 간격으로 실행하도록 등록하는 함수
- addEventListener: 특정 이벤트 발생시 실행할 콜백을 등록하는 함수
fetch 비동기 함수
- fetch는 Promise 객체를 리턴하고, 이 Promise 객체는 비동기 실행을 지원하는 또 다른 종류의 문법이다.
Promise
- 비동기 통신 작업의 결과를 받아올 수 있는 특수 객체.
- 상태의 종류: pending(진행 중), fulfilled(성공), rejected(실패)
그 외... http 프로토콜 말고도 TCP, IP, FTP, SMTP 등 여러 프로토콜이 존재하며 계층이 다름.