반응형
SMALL
XMLHttpRequest (XHR) 객체는 서버와 상호작용하기 위해 사용되며, 전체 페이지의 새로고침 없이도 URL로부터 데이터를 받아올 수 있게 해줍니다. 이는 AJAX(Asynchronous JavaScript and XML) 통신의 핵심 요소 중 하나입니다. **XMLHttpRequest**를 사용하면, 웹 페이지가 로드된 후에도 서버로부터 데이터를 요청하고 받아올 수 있으며, 이를 통해 페이지의 일부분만을 업데이트할 수 있습니다.
기본 사용법
XMLHttpRequest 객체의 사용법은 다음과 같은 단계로 요약할 수 있습니다:
- XHR 객체 생성: XMLHttpRequest 객체의 인스턴스를 생성합니다.
- 요청 초기화: .open() 메서드를 사용하여 요청을 초기화합니다.
- 응답 처리를 위한 이벤트 핸들러 설정: .onreadystatechange 이벤트 핸들러를 사용하여 서버 응답을 처리합니다.
- 요청 전송: .send() 메서드를 사용하여 서버에 요청을 전송합니다.
예제 코드
// XMLHttpRequest 객체 생성 var xhr = new XMLHttpRequest(); // 요청 초기화 xhr.open('GET', '<https://api.example.com/data>', true); // 응답 처리를 위한 이벤트 핸들러 설정 xhr.onreadystatechange = function () { // 요청이 완료되고, 응답이 성공적으로 도착했는지 확인 if (xhr.readyState === 4 && xhr.status === 200) { // 서버 응답 처리 console.log(xhr.responseText); } }; // 요청 전송 xhr.send();
XMLHttpRequest의 주요 속성 및 메서드
- .open(method, url[, async[, user[, password]]]): HTTP 요청을 초기화합니다. method는 HTTP 메서드('GET', 'POST' 등), url은 요청을 보낼 서버의 URL입니다. async는 비동기적(true) 또는 동기적(false) 요청 여부를 결정합니다.
- .send([body]): 요청을 서버에 전송합니다. **body**는 주로 'POST' 메서드와 함께 사용됩니다.
- .setRequestHeader(header, value): 요청에 특정 HTTP 헤더 값을 설정합니다.
- .status: HTTP 응답 상태 코드를 반환합니다 (예: 200, 404).
- .responseText: 서버로부터 반환된 응답 텍스트를 문자열로 반환합니다.
- .readyState: 요청의 현재 상태를 나타내는 값으로, **0**에서 **4**까지의 값을 가집니다.
주의사항
- 보안: 같은 출처 정책(Same-Origin Policy)에 의해, 다른 도메인으로의 요청은 기본적으로 제한됩니다. CORS(Cross-Origin Resource Sharing)를 지원하는 서버에서는 이러한 제한을 완화할 수 있습니다.
- 대체 기술: **XMLHttpRequest**보다 더 현대적이고 간결한 API인 **fetch**가 널리 사용되고 있습니다. **fetch**는 프로미스 기반으로, 비동기 처리를 더 쉽게 할 수 있게 해줍니다.
**XMLHttpRequest**는 여전히 웹 개발에서 유용하게 사용될 수 있지만, 새로운 프로젝트에서는 더 나은 기능과 가독성을 제공하는 **fetch API**의 사용을 고려해 보는 것이 좋습니다.
728x90
반응형
LIST
'javascript > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
콜백 헬(Callback Hell)과 프로미스(Promises) (0) | 2024.02.21 |
---|---|
REST API (0) | 2024.02.21 |
AJAX(Asynchronous JavaScript and XML) (0) | 2024.02.21 |
이벤트 루프(Event Loop)와 태스크 큐(Task Queue) (0) | 2024.02.21 |
동기 처리(Synchronous)와 비동기 처리(Asynchronous) (0) | 2024.02.21 |