@ecedi/api-factory
v0.1.1
Published
Simplification of connection with API Symfony, Drupal 8, Contenta CMS...
Downloads
20
Readme
Api Factory for Angular by ECEDI
This library is for connected all your project angular with your api Symfony, Drupal 8, Contenta CMS...
You have access with this module at this :
- AuthService (For authentification user)
- ApiRequestFactoryService (For create request with connection enabled with user)
- AuthInterceptorService (For intercept all request from this module and add authentification or check if token is not expired)
For this you need to import this module :
import { environment } from '@environments/environment';
@NgModule({
declarations: [
AppComponent
],
imports: [
ApiFactoryModule.forRoot(environment)
],
bootstrap: [AppComponent]
})
export class AppModule { }
Your environment file need all this properties (you can create one file for credentials):
const credentials = {
grant_type: '',
client_id: '',
client_secret: '',
scope: ''
};
export const environment = {
production: false,
credential: credentials,
apiDomain: 'http://localhost',
waiting: false,
};
You can use all service with import this in providers :
providers: [
AuthService,
ApiRequestFactoryService,
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptorService, multi: true },
]
Example for create request with ApiRequestFactoryService :
export class ExampleService {
constructor(private apiFactory: ApiRequestFactoryService) { }
getItems<T>(): Observable<T> {
const query = this.apiFactory.create<T>(`${url}`, false); // create query object, the second parameter is for json api (Drupal 8, Contenta cms).
return query.get(); // return promise (get/post/patch/delete/put is enabled).
}
}
export class ExampleComponent {
constructor(private exampleService: ExampleService) { }
getItems() {
this.exampleService.getItems().subscribe((value: any) => {
console.log(value);
})
}
}
If you use JSON API you have access at this (Drupal 8, Contenta CMS):
export class ExampleService {
constructor(private apiFactory: ApiRequestFactoryService) { }
getItems<T>(): Observable<T> {
const query = this.apiFactory.create<T>(`${url}`, true); // Create query object, the second parameter is for json api (Drupal 8, Contenta cms).
query.fields('key', 'string'); // Include fields in your request.
query.include('string'); // Include linked entity.
query.pager('limit', 'offset'); // Request with pager (json api limit at 50 per page).
query.sort('value'); // Basic sort.
query.condition('field', 'path', 'value', 'operator', 'memberof');
// Or with condition group
query.conditionGroup('name', 'operator');
query.condition('field', 'path', 'value', 'operator', 'conditionGroupName');
return query.get(); // Return promise (get/post/patch/delete/put is enabled).
}
}