@irohalab/mira-sdk-angular
v1.3.0
Published
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.
Downloads
226
Readme
MiraSdkAngular
This library was generated with Angular CLI version 18.2.0.
General usage
In your Angular project:
// without configuring providers
import { MiraApiModule } from '';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
MiraApiModule,
// 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 { MiraApiModule, MiraConfiguration, MiraConfigurationParameters } from '';
export function apiConfigFactory (): MiraConfiguration {
const params: MiraConfigurationParameters = {
// set configuration parameters here.
}
return new MiraConfiguration(params);
}
@NgModule({
imports: [ MiraApiModule.forRoot(apiConfigFactory) ],
declarations: [ AppComponent ],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule {}
// configuring providers with an authentication service that manages your access tokens
import { MiraApiModule, MiraConfiguration } from '';
@NgModule({
imports: [ MiraApiModule ],
declarations: [ AppComponent ],
providers: [
{
provide: MiraConfiguration,
useFactory: (authService: AuthService) => new MiraConfiguration(
{
basePath: environment.apiUrl,
accessToken: authService.getAccessToken.bind(authService)
}
),
deps: [AuthService],
multi: false
}
],
bootstrap: [ AppComponent ]
})
export class AppModule {}
import { DefaultApi } from '';
export class AppComponent {
constructor(private apiGateway: DefaultApi) { }
}
Note: The MiraApiModule is restricted to being instantiated once app wide. This is to ensure that all services are treated as singletons.
Using multiple OpenAPI files / APIs / MiraApiModules
In order to use multiple MiraApiModules
generated from different OpenAPI files,
you can create an alias name when importing the modules
in order to avoid naming conflicts:
import { MiraApiModule } from 'my-api-path';
import { MiraApiModule as OtherApiModule } from 'my-other-api-path';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
MiraApiModule,
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 '';
bootstrap(AppComponent, [
{ provide: BASE_PATH, useValue: 'https://your-web-service.com' },
]);
or
import { BASE_PATH } from '';
@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 '';
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),
})