benhason1/nestjs-http-promise
promise implementation of nestjs http module with retries feature using axios-retry and axios
nestjs module that just doing little modification to the original and good nestjs http module.
.toPromise() every http call.{ retries: NUMBER_OF_RETRIES } in the config of the http module.
more details in the configuration sectionUsing npm:
$ npm install nestjs-http-promise
Using yarn:
$ yarn add nestjs-http-promise
import the module:
import { HttpModule } from 'nestjs-http-promise'
@Module({
imports: [HttpModule]
})
inject the service in the class:
import { HttpService } from 'nestjs-http-promise'
class Demo {
constructor(private readonly httpService: HttpService) {}
}
use the service:
public callSomeServer(): Promise<object> {
return this.httpService.get('http://fakeService')
}
No download data available
No tracked packages depend on this.
the service uses axios and axios-retry, so you can pass any AxiosRequestConfig And/Or AxiosRetryConfig
just pass it in the .register() method as you would do in the original nestjs httpModule
import { HttpModule } from 'nestjs-http-promise'
@Module({
imports: [HttpModule.register(
{
timeout: 1000,
retries: 5,
...
}
)]
})
When you need to pass module options asynchronously instead of statically, use the registerAsync() method just like in nest httpModule.
you have a couple of techniques to do it:
HttpModule.registerAsync({
useFactory: () => ({
timeout: 1000,
retries: 5,
...
}),
});
HttpModule.registerAsync({
useClass: HttpConfigService,
});
Note that in this example, the HttpConfigService has to implement HttpModuleOptionsFactory interface as shown below.
@Injectable()
class HttpConfigService implements HttpModuleOptionsFactory {
async createHttpOptions(): Promise<HttpModuleOptions> {
const configurationData = await someAsyncMethod();
return {
timeout: configurationData.timeout,
retries: 5,
...
};
}
}
If you want to reuse an existing options provider instead of creating a copy inside the HttpModule, use the useExisting syntax.
HttpModule.registerAsync({
imports: [ConfigModule],
useExisting: ConfigService,
});