It's highly recommended to upgrade to v2 as v1 will not be maintained anymore.
After installing the package, just import the SoapModule on the module you want to use the soap client.
import { Module } from '@nestjs/common';
import { SoapModule } from 'nestjs-soap';
@Module({
imports: [
SoapModule.registerAsync([
{ name: 'MY_SOAP_CLIENT', uri: 'http://yourserver/yourservice.wso?wsdl' },
]),
],
})
export class ExampleModule {}
The registerAsync
or forRoot
function receives an array of SoapModuleOptions. This means you can create as many clients you need. You just need to create unique names for each one.
Another way to import the SoapModule is using forRootAsync
, like other factory provider. Our factory function can be async
and can inject dependencies through inject
:
import { Module } from '@nestjs/common';
import { SoapModule, SoapModuleOptions } from 'nestjs-soap';
import { ConfigService } from '@nestjs/config';
@Module({
imports: [
SoapModule.forRootAsync([
{
name: 'MY_SOAP_CLIENT',
inject: [ConfigService],
useFactory: async (
configService: ConfigService,
): Promise<SoapModuleOptions> => ({
uri: configService.get<string>('soap.uri'),
auth: {
username: configService.get<string>('soap.username'),
password: configService.get<string>('soap.password'),
},
}),
}
]),
],
})
export class ExampleModule {}
Then inject the client where you want to use it.
import { Inject, Injectable } from '@nestjs/common';
import { Client } from 'nestjs-soap';
@Injectable()
export class ExampleService {
constructor(@Inject('MY_SOAP_CLIENT') private readonly mySoapClient: Client) {}
async exampleFunction() {
return await this.mySoapClient.YourFunctionAsync();
}
}
The injected Client is from the soap npm package. From here, please follow the use instructions on the soap repository.
You can also create your own factory implemeting SoapModuleOptionsFactory
import { Injectable, Inject } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { SoapModuleOptions, SoapModuleOptionsFactory } from 'nestjs-soap';
@Injectable()
export class ExampleSoapConfigService implements SoapModuleOptionsFactory {
constructor(
@Inject(ConfigService) private readonly configService: ConfigService
)
createSoapModuleOptions(): SoapModuleOptions {
return {
uri: configService.get<string>('soap.uri'),
auth: {
username: configService.get<string>('soap.username'),
password: configService.get<string>('soap.password'),
},
};
}
}
name
: The unique client name for class injection.
uri
: The SOAP service uri.
auth
: Basic authentication filling in the username
and password
fields when needed.
clientOptions
: The soap client options as in soap repository .