@luxbss/gengen v1.2.9
GenGen
This tool generates models and Angular services based on generated Swagger JSON.
Getting Started
First of all you make sure that swagger.json is accessable.
Location by default is https://localhost:5001/swagger/v1/swagger.json. You can override it. See all options
Generate all API
gengen g --allGenerate a part of API
Initialize empty rule set
gengen initGenerate list of available endpoints
gengen g:cDescribe endpoints who will be generated
import { Endpoints } from './endpoints'; export default new Set([Endpoints.ProductService.GetProducts, Endpoints.CategoryService.AddCategory]);Generate specified routes
gengen g
Options
| Option | Description | Type | Default value |
|---|---|---|---|
| all | Generate all | boolean | false |
| url | Location of swagger.json | string | https://localhost:5001/swagger/v1/swagger.json |
| file | Local path to swagger.json | string | |
| output | Output directory | string | ./src/generated |
| configOutput | Output directory using in 'Generate a part of API' scenario | string | ./.generated |
| aliasName | Specify prefix for generated filenames. more info | string | |
| withRequestOptions | Allows to pass http request options to generated methods. more info | boolean | false |
| utilsRelativePath | Relative path to utils files. It may be useful when you have multiple generation sources | string | |
| unstrictId | Disable converting 'id' properties to strong Guid type. more info | boolean | false |
Option details
aliasName
Alias provides:
- Prefixes for model and service files
- A way to specify dynamic basePath for services.
Example:
gengen --aliasName myaliasGenGen would create files myalias-models.ts, myalias-services.ts in output directory. And we could override services basePath with following code
window.__gengen__basePathMap = {
myalias: 'https://myexternalapi/api'
};withRequestOptions
GenGen would generate optional parameter options for each method in services. With which you could provide any additional request options from the interface below (IAngularHttpRequestOptions).
Example:
interface IAngularHttpRequestOptions {
headers?: HttpHeaders | { [header: string]: string | string[] };
observe?: 'body' | 'response';
params?: HttpParams | { [param: string]: string | string[] };
reportProgress?: boolean;
responseType?: 'json' | 'blob';
withCredentials?: boolean;
}
@Injectable({
providedIn: 'root'
})
export class ExampleService extends BaseHttpService {
// ...
public methodName(options?: IAngularHttpRequestOptions): Observable<void> {
return this.post<string>(`methodName`, options);
}
// ...
}
@Component(
// ...
)
export class MyComponent {
constructor(private exampleService: ExampleService) {
this.exampleService.methodName({
withCredentials: true
});
}
}unstrictId
By default, GenGen converts all 'id' properties from string type to custom Guid type. You can disable this behaviour by using it option
Example:
public static toDTO(model: Partial<Product>): IProduct {
return {
// ...
id: model.id ? model.id.toString() : Guid.empty.toString(),
// ...
};
}
public static fromDTO(dto: IProduct): Product {
// ...
model.id = new Guid(dto.id);
// ...
}License and copyright
Copyright (c) 2020-2023 Luxoft
Licensed under the MIT license
10 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago