Skip to content

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.