nestjs-undici
v0.2.58
Published
Undici utilities module based on the @nodejs/undici package π
Downloads
368
Maintainers
Readme
NestJS Undici
NestJS Undici is a powerful HTTP client module for NestJS applications, built on top of @nodejs/undici. It provides a simple and efficient way to make HTTP requests in your NestJS applications.
Features
- π Built on top of @nodejs/undici
- π Full TypeScript support
- β‘ High-performance HTTP client
- π Secure by default
- π οΈ Easy to configure and use
- π¦ Lightweight and dependency-free
- π Comprehensive documentation
Installation
# Using npm
npm install nestjs-undici
# Using yarn
yarn add nestjs-undiciQuick Start
- Import the
HttpModulein your root module:
import { Module } from '@nestjs/common';
import { HttpModule } from 'nestjs-undici';
@Module({
imports: [
HttpModule.register({
// Optional configuration (Undici Request Options)
headers: {
'User-Agent': 'NestJS-Undici',
},
}),
],
})
export class AppModule {}- Inject and use the
HttpServicein your service:
import { Injectable } from '@nestjs/common';
import { HttpService } from 'nestjs-undici';
import { lastValueFrom } from 'rxjs';
@Injectable()
export class AppService {
constructor(private readonly httpService: HttpService) {}
async getUsers() {
const response = await lastValueFrom(
this.httpService.request('https://api.example.com/users')
);
return response.body.json();
}
}Configuration
The HttpModule can be configured using the register or registerAsync methods. The configuration object accepts standard Undici Request Options and an optional dispatcher.
Synchronous Configuration
import { Agent } from 'undici';
HttpModule.register({
headers: {
'Content-Type': 'application/json',
},
// You can set a custom dispatcher (e.g., for proxy or mocking)
dispatcher: new Agent({
connect: {
timeout: 5000
}
}),
});Asynchronous Configuration
HttpModule.registerAsync({
useFactory: async (configService: ConfigService) => ({
headers: {
'Authorization': await configService.get('API_KEY'),
},
}),
inject: [ConfigService],
});Advanced Usage
Making HTTP Requests
// POST request
const response = await lastValueFrom(
this.httpService.request('https://api.example.com/users', {
method: 'POST',
body: JSON.stringify({ name: 'John Doe' }),
})
);Using Custom Dispatchers (Interception)
To intercept requests or configure advanced behavior (like connection pools, proxies, or mocks), use a custom Dispatcher.
import { Injectable } from '@nestjs/common';
import { HttpService } from 'nestjs-undici';
import { ProxyAgent } from 'undici';
@Injectable()
export class AppService {
constructor(private readonly httpService: HttpService) {
// Set a global dispatcher for this service instance
this.httpService.setGlobalDispatcher(new ProxyAgent('http://my-proxy:8080'));
}
}API Reference
For detailed API documentation, please visit our documentation site.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
If you find this package useful, please consider giving it a βοΈ on GitHub.
