HTTP Service
import: @azure-net/kit/infra
Основной HTTP клиент для выполнения запросов к API.
Создание HTTP Service
typescript
import { HttpService } from '@azure-net/kit/infra';
const httpService = new HttpService({
baseUrl: 'https://api.example.com',
baseOptions: {
timeout: 10000,
headers: {
'Content-Type': 'application/json'
}
},
onRequest: (options) => {
// Модификация опций перед запросом (вызывается перед каждым запросом)
const token = getAuthToken();
if (token) {
options.headers = {
...options.headers,
'Authorization': `Bearer ${token}`
};
}
},
onError: (error) => {
// Обработка ошибок в ключе error — экземпляр HttpServiceError
// После обработки обязательно верните ошибку, она должна оставаться экземпляром HttpServiceError на этом этапе
console.error('HTTP Error:', error);
return error;
}
});Выполнение запросов
typescript
// GET запрос
const users = await httpService.get<User[]>('/users');
// POST запрос с данными
const newUser = await httpService.post<User>('/users', {
json: {
name: 'John Doe',
email: 'john@example.com'
}
}); // Запросы с отправкой данных также поддерживают body для отправки данных, json отправляет именно JSON, самостоятельно преобразуя объект
// Различные форматы ответа
const blob = await httpService.get<Blob>('/files/document.pdf', {
responseFormat: 'blob'
});
const text = await httpService.get<string>('/health', {
responseFormat: 'text'
});
// PUT, PATCH, DELETE
await httpService.put<User>(`/users/${id}`, { json: updateData });
await httpService.patch<User>(`/users/${id}`, { json: partialData });
await httpService.delete(`/users/${id}`);Типы ответов и ошибок
typescript
export interface IHttpServiceResponse<YourResponseData> {
headers: Record<string, string>;
status: number;
success: boolean;
data: YourResponseData;
message: string;
}
export interface IHttpServiceError<YourErrorResponse> extends IHttpServiceResponse<YourErrorResponse> {
original?: Error;
}Допустимые форматы ответа (ключ responseFormat)
- json — вернёт ключ data в HttpServiceResponse как JSON
- blob — вернёт ключ data в HttpServiceResponse как blob
- text — вернёт ключ data в HttpServiceResponse как text
- arrayBuffer — вернёт ключ data в HttpServiceResponse как arrayBuffer
- body — вернёт ключ базового тела ответа
(ReadableStream<Uint8Array>)
Допустимые baseOptions и options при запросе
Под капотом HttpService использует ky, то есть в options можно использовать все базовые опции fetch плюс те, что есть в ky, например json.