HTTP Service

http service module build with axios

Installation#

npm i @appolo/http

in config/modules/all.ts

Options#

keyDescriptionTypeDefault
idinjection idstringhttpService

any option from Request Config can be added and will be added to all request.

import {HttpModule} from '@appolo/http';
export = async function (app: App) {
app.module.usage(HttpModule.for({
baseURL:"https://some-domain.com/api/",
retry:2
}));
}

Usage#

import {define, singleton,inject} from '@appolo/inject'
import {publisher} from "@appolo/http";
@define()
@singleton()
export class SomeManager {
@inject httpService:HttpService
async getUserId(): Promise<string> {
let result = await this.httpService.request<{userId:string}>({
url:"http://someurl",
method:"post",
timeout:1000,
retry:3
})
return result.data.userId
}
}

Request Config#

keyDescriptionTypeDefault
url`request urlstring``
methodis the request method to be used when making the requeststringget
baseURLbaseURL will be prepended to url unless url is absolutestring``
headerscustom headersobject{}
paramsare the URL parameters to be sent with the requestobject{}
datathe data to be sent as the request bodyobject{}
timeoutspecifies the number of milliseconds before the request times outnumber0
withCredentialsindicates whether or not cross-site Access-Control requestsbooleanfalse
authindicates that HTTP Basic auth should be used, and supplies credentialsobject{}
responseTypeindicates the type of data that the server will respond withstringjson
responseEncodingindicates encoding to use for decoding responsesstringutf8
maxRedirectsdefines the maximum number of redirects to follow in node.jsnumber5
retryretry times on requests that return a response (500, etc) before giving upnumber0
noResponseRetriesretry times on errors that don't return a response (ENOTFOUND, ETIMEDOUT, etc)number0
retryDelayMilliseconds to delay at firstnumber100
fallbackUrlsretry on fallback urlsstring[][]]