JSPM

  • Created
  • Published
  • Downloads 429
  • Score
    100M100P100Q145763F
  • License Veeroute

OpenAPI client for @veeroute/lss-universal-angular

Package Exports

    Readme

    @veeroute/lss-universal-angular@7.16.2673

    General usage

    In your Angular project:

    // without configuring providers
    import { LssUniversalApiModule } from '@veeroute/lss-universal-angular';
    import { HttpClientModule } from '@angular/common/http';
    
    @NgModule({
        imports: [
            LssUniversalApiModule,
            // make sure to import the HttpClientModule in the AppModule only,
            // see https://github.com/angular/angular/issues/20575
            HttpClientModule
        ],
        declarations: [ AppComponent ],
        providers: [],
        bootstrap: [ AppComponent ]
    })
    export class AppModule {}
    // configuring providers
    import { LssUniversalApiModule, Configuration, ConfigurationParameters } from '@veeroute/lss-universal-angular';
    
    export function apiConfigFactory (): Configuration {
      const params: ConfigurationParameters = {
        // set configuration parameters here.
      }
      return new Configuration(params);
    }
    
    @NgModule({
        imports: [ LssUniversalApiModule.forRoot(apiConfigFactory) ],
        declarations: [ AppComponent ],
        providers: [],
        bootstrap: [ AppComponent ]
    })
    export class AppModule {}
    // configuring providers with an authentication service that manages your access tokens
    import { LssUniversalApiModule, Configuration } from '@veeroute/lss-universal-angular';
    
    @NgModule({
        imports: [ LssUniversalApiModule ],
        declarations: [ AppComponent ],
        providers: [
          {
            provide: Configuration,
            useFactory: (authService: AuthService) => new Configuration(
              {
                basePath: environment.apiUrl,
                accessToken: authService.getAccessToken.bind(authService)
              }
            ),
            deps: [AuthService],
            multi: false
          }
        ],
        bootstrap: [ AppComponent ]
    })
    export class AppModule {}
    import { DefaultApi } from '@veeroute/lss-universal-angular';
    
    export class AppComponent {
        constructor(private apiGateway: DefaultApi) { }
    }

    Note: The LssUniversalApiModule is restricted to being instantiated once app wide. This is to ensure that all services are treated as singletons.

    Using multiple OpenAPI files / APIs / LssUniversalApiModules

    In order to use multiple LssUniversalApiModules generated from different OpenAPI files, you can create an alias name when importing the modules in order to avoid naming conflicts:

    import { LssUniversalApiModule } from 'my-api-path';
    import { LssUniversalApiModule as OtherApiModule } from 'my-other-api-path';
    import { HttpClientModule } from '@angular/common/http';
    
    @NgModule({
      imports: [
        LssUniversalApiModule,
        OtherApiModule,
        // make sure to import the HttpClientModule in the AppModule only,
        // see https://github.com/angular/angular/issues/20575
        HttpClientModule
      ]
    })
    export class AppModule {
    
    }

    Set service base path

    If different than the generated base path, during app bootstrap, you can provide the base path to your service.

    import { BASE_PATH } from '@veeroute/lss-universal-angular';
    
    bootstrap(AppComponent, [
        { provide: BASE_PATH, useValue: 'https://your-web-service.com' },
    ]);

    or

    import { BASE_PATH } from '@veeroute/lss-universal-angular';
    
    @NgModule({
        imports: [],
        declarations: [ AppComponent ],
        providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ],
        bootstrap: [ AppComponent ]
    })
    export class AppModule {}

    Using @angular/cli

    First extend your src/environments/*.ts files by adding the corresponding base path:

    export const environment = {
      production: false,
      API_BASE_PATH: 'http://127.0.0.1:8080'
    };

    In the src/app/app.module.ts:

    import { BASE_PATH } from '@veeroute/lss-universal-angular';
    import { environment } from '../environments/environment';
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [ ],
      providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }],
      bootstrap: [ AppComponent ]
    })
    export class AppModule { }

    Customizing path parameter encoding

    Without further customization, only path-parameters of style 'simple' and Dates for format 'date-time' are encoded correctly.

    Other styles (e.g. "matrix") are not that easy to encode and thus are best delegated to other libraries (e.g.: @honoluluhenk/http-param-expander).

    To implement your own parameter encoding (or call another library), pass an arrow-function or method-reference to the encodeParam property of the Configuration-object (see General Usage above).

    Example value for use in your Configuration-Provider:

    new Configuration({
        encodeParam: (param: Param) => myFancyParamEncoder(param),
    })