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.
- 🚀 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
- 🔍 Built-in request/response interceptors
- 🔄 Automatic retry mechanism
- 📝 Comprehensive documentation
# Using npm
npm install nestjs-undici
# Using yarn
yarn add nestjs-undici
- Import the
HttpModule
in your root module:
import { Module } from '@nestjs/common';
import { HttpModule } from 'nestjs-undici';
@Module({
imports: [
HttpModule.register({
// Optional configuration
headers: {
'Content-Type': 'application/json',
},
}),
],
})
export class AppModule {}
- Inject and use the
HttpService
in your service:
import { Injectable } from '@nestjs/common';
import { HttpService } from 'nestjs-undici';
@Injectable()
export class AppService {
constructor(private readonly httpService: HttpService) {}
async getUsers() {
const response = await this.httpService
.request('https://api.example.com/users')
.toPromise();
return response.data;
}
}
The HttpModule
can be configured using the register
or registerAsync
methods:
HttpModule.register({
headers: {
'Content-Type': 'application/json',
},
timeout: 5000,
retry: {
attempts: 3,
delay: 1000,
},
});
HttpModule.registerAsync({
useFactory: async (configService: ConfigService) => ({
headers: {
'Authorization': await configService.get('API_KEY'),
},
}),
inject: [ConfigService],
});
// GET request
const response = await this.httpService
.request('https://api.example.com/users')
.toPromise();
// POST request
const response = await this.httpService
.request('https://api.example.com/users', {
method: 'POST',
body: JSON.stringify({ name: 'John Doe' }),
})
.toPromise();
import { Injectable } from '@nestjs/common';
import { HttpService, HttpInterceptor } from 'nestjs-undici';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(request: Request) {
request.headers.set('Authorization', 'Bearer token');
return request;
}
}
// Register the interceptor
HttpModule.register({
interceptors: [AuthInterceptor],
});
For detailed API documentation, please visit our documentation site.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this package useful, please consider giving it a ⭐️ on GitHub.