Package Exports
- nestjs-undici
- nestjs-undici/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (nestjs-undici) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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
- 🔍 Built-in request/response interceptors
- 🔄 Automatic retry mechanism
- 📝 Comprehensive documentation
Installation
# Using npm
npm install nestjs-undici
# Using yarn
yarn add nestjs-undici
Quick Start
- 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;
}
}
Configuration
The HttpModule
can be configured using the register
or registerAsync
methods:
Synchronous Configuration
HttpModule.register({
headers: {
'Content-Type': 'application/json',
},
timeout: 5000,
retry: {
attempts: 3,
delay: 1000,
},
});
Asynchronous Configuration
HttpModule.registerAsync({
useFactory: async (configService: ConfigService) => ({
headers: {
'Authorization': await configService.get('API_KEY'),
},
}),
inject: [ConfigService],
});
Advanced Usage
Making HTTP Requests
// 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();
Using Interceptors
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],
});
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.