Skip to content

BaseApi

Default REST client wrapping Axios, with automatic CodeceptJS detection.

Import

ts
import BaseApi from 'flex-rest'
// or
import { BaseApi } from 'flex-rest'

Constructor

ts
new BaseApi(options?: BaseApiOptions)

BaseApiOptions

ts
interface BaseApiOptions {
  token?: string
  baseUrl?: string
  timeout?: number
  retry?: { count: number; delay?: number }
  onRequest?: RequestHook
  onResponse?: ResponseHook
  allowInsecureSSL?: boolean
  logFile?: string
}
OptionTypeDefaultDescription
tokenstringundefinedBearer token added to every request
baseUrlstring''Prepended to relative URL paths
timeoutnumberundefinedRequest timeout in milliseconds
retry{ count, delay? }undefinedRetry failed requests (delay defaults to 1 000 ms)
onRequestRequestHookundefinedCalled before each request
onResponseResponseHookundefinedCalled after each response
allowInsecureSSLbooleanfalseDisables SSL certificate verification
logFilestringundefinedFile path for request/response logging

Methods

get

ts
get<T>(url: string, headers?: object): Promise<HttpResponse<T>>

post

ts
post<T>(url: string, payload?: any, headers?: object): Promise<HttpResponse<T>>

put

ts
put<T>(url: string, payload?: any, headers?: object): Promise<HttpResponse<T>>

patch

ts
patch<T>(url: string, payload?: any, headers?: object): Promise<HttpResponse<T>>

delete

ts
delete<T>(url: string, headers?: object): Promise<HttpResponse<T>>
ts
head<T>(url: string, headers?: object): Promise<HttpResponse<T>>

Protected Properties

When extending BaseApi, these properties are accessible:

PropertyTypeDescription
tokenstring | undefinedThe Bearer token (mutable)
baseUrlstringResolved base URL
timeoutnumber | undefinedRequest timeout
retryCountnumberNumber of retries (0 = no retry)
retryDelaynumberMilliseconds between retries
onRequestRequestHook | undefinedPre-request hook
onResponseResponseHook | undefinedPost-response hook
httpsAgenthttps.Agent | undefinedCustom HTTPS agent for insecure SSL
logFilestring | undefinedLog file path

Example

ts
class OrderApi extends BaseApi {
  constructor(token: string) {
    super({
      token,
      baseUrl: 'https://api.example.com',
      timeout: 10000,
      retry: { count: 2, delay: 500 },
      logFile: 'output/orders.txt'
    })
  }

  async getOrders() {
    return this.get<Order[]>('/orders')
  }

  async createOrder(items: CartItem[]) {
    return this.post<Order>('/orders', { items })
  }

  async patchOrder(id: number, data: Partial<Order>) {
    return this.patch<Order>(`/orders/${id}`, data)
  }
}

Released under the MIT License.