История изменений
Исправление Syncro, (текущая версия) :
а насчет хттп клиента, в большинстве случаев кажется достаточно обертки на промисах для того же XMLHttpRequest, типа вот такой
export class XmlHttpClient extends HttpClientBase {
request(url, type = 'GET', contentType, body, headers) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open(type, url);
if (contentType !== ARG_CONTENT_TYPE_AUTO) {
xhr.setRequestHeader(HEADER_CONTENT_TYPE, contentType ? contentType : CONTENT_TYPE_JSON);
}
if (this.auth && this.auth.type === AUTH_TYPE_BASIC) {
xhr.setRequestHeader(HEADER_AUTHORIZATION, "Basic " + btoa(this.auth.username + ':' + this.auth.password));
}
if (this.headers && typeof this.headers === 'object') {
for (let headerName of Object.keys(this.headers)) {
xhr.setRequestHeader(headerName, this.headers[headerName]);
}
}
if (headers && typeof headers === 'object') {
for (let headerName of Object.keys(headers)) {
xhr.setRequestHeader(headerName, headers[headerName]);
}
}
if (! ResLoader.isInIE()) {
xhr.responseType = 'json';
}
xhr.onreadystatechange = (event) => {
let request = event.target;
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
resolve(request);
} else {
reject(request);
}
}
};
if (body) {
xhr.send(body);
} else {
xhr.send();
}
});
}
}
библиотеки могут быть удобными, но обычно они имеют особенности и добавляют их в процессы, ну типа неспособности fetch’a ловить ошибки
Исходная версия Syncro, :
а насчет хттп клиента, в большинстве случаев кажется достаточно обертки на промисах для того же XMLHttpRequest, типа вот такой
export class XmlHttpClient extends HttpClientBase {
//auth;
//headers;
request(url, type = 'GET', contentType, body, headers) {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open(type, url);
if (contentType !== ARG_CONTENT_TYPE_AUTO) {
xhr.setRequestHeader(HEADER_CONTENT_TYPE, contentType ? contentType : CONTENT_TYPE_JSON);
}
if (this.auth && this.auth.type === AUTH_TYPE_BASIC) {
xhr.setRequestHeader(HEADER_AUTHORIZATION, "Basic " + btoa(this.auth.username + ':' + this.auth.password));
}
if (this.headers && typeof this.headers === 'object') {
for (let headerName of Object.keys(this.headers)) {
xhr.setRequestHeader(headerName, this.headers[headerName]);
}
}
if (headers && typeof headers === 'object') {
for (let headerName of Object.keys(headers)) {
xhr.setRequestHeader(headerName, headers[headerName]);
}
}
if (! ResLoader.isInIE()) {
xhr.responseType = 'json';
}
xhr.onreadystatechange = (event) => {
let request = event.target;
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
resolve(request);
} else {
reject(request);
}
}
};
if (body) {
xhr.send(body);
} else {
xhr.send();
}
});
}
}
библиотеки могут быть удобными, но обычно они имеют особенности и добавляют их в процессы, ну типа неспособности fetch’a ловить ошибки