ngx-endpoints
Version:
A library to dynamically load data from http endpoints / urls in angular
152 lines (116 loc) • 4.24 kB
Markdown
<center><image src="src/assets/images/ic_launcher.png"><h1>ngx-endpoints</h1></center>
load data from url-endpoints dynamically at runtime
- [Demo](
- [Installation](
- [Technical Documentation](
- [Usecase](
- [Dependencies](
- [How to integrate into a component](
* [Attributes](
* [Example](
+ [1. Import Module](
+ [2. Import Classes](
+ [3. Inject NgxEndpointService and NgxEndPointDataProviderService](
+ [4. Use it in code directly](
https://pharindoko.github.io/ngx-endpoints/sample
NPM
```
npm install ngx-endpoints --save
```
YARN
```
yarn add ngx-endpoints
```
https://pharindoko.github.io/ngx-endpoints/documentation
The assumption is always that you want to **GET** data.
* You need to execute url endpoints dynamically in the application.
* You retrieve urls from a backend and request further data from different urls based on different related objects
* You want to make date relative requests
* You want to make live requests and subscribe to it
Makes use of following packages:
- moment.js
- moment-relativism
- query-string
Create an Array of Type NgxEndPoint (Array`<NgxEndPointData>`)
### Attributes
| Attribute | Description | Default Value | Type | Mandatory |
|--- |--- |--- |--- |--- |
| title | title of the url endpoint you request| "" | string | true |
| endPointId | id for later identification (matching) | 0 |number |true
| active | enable or disable endpoint | true | boolean | false
| endPointUrl |the url endpoint which will be requested | "" | string | true
| requestOptions | add header key/values | {} | object |false
| live | Does the url endpoint deliver live data | false | boolean |false
| liveinterval | In which timeinterval (milliseconds) the data should be requested | 3000 | number |false
| convertDates | Use relative date expressions in endPointUrl for e.g. for grafana/prometheus - [moment-relativism](https://github.com/AdvancedClimateSystems/moment-relativism) | false | boolean |false
| convertDatesOutputFormat | [moment.js](https://momentjs.com/docs/#/displaying/format/) format will be used for conversion before url request will be started | - | string |false
### Example
```typescript
endPointArray: Array<NgxEndPointData> = [
{
'title': 'Deutsche Bahn Public Transport API - Jungfernheid',
'endPointId': 1,
'active': true,
'endPointUrl': 'https://2.db.transport.rest/stations?query=jungfernheide',
'requestOptions': {
'Content-Type': 'application/json',
},
'live': false
},
{
'title': 'search-meinfernbus-locations - Frankfurt',
'endPointId': 2,
'active': true,
'endPointUrl': 'https://1.flixbus.transport.rest/regions/?query=Frankfurt',
'requestOptions': {
'Content-Type': 'application/json',
},
'live': true,
'liveinterval': 10000
}];
```
```typescript
...
import { NgxEndpointsModule} from 'ngx-endpoints';
...
@NgModule({
declarations: [
],
imports: [
...
NgxEndpointsModule,
],
providers: [],
bootstrap: []
})
export class AppModule { }
```
```typescript
import {NgxEndPoint, NgxEndPointDataProviderService, NgxEndPointData, NgxEndpointService} from 'ngx-endpoints';
```
```typescript
constructor(protected endpointservice: NgxEndpointService, protected endpointdataprovider: NgxEndPointDataProviderService) { }
```
* Basic Example
```typescript
ngOnInit(): void {
// add to dataprovider service (Endpoints get created)
for (const dataitem of this.endPointArray) {
this.endpointdataprovider.addEndPoint(dataitem).requestData();
}
// subscribe to specific endpoint
this.endpointdataprovider.endpoints.find(x => x.endpoint.endPointId === 2).data.subscribe(val => {
console.log('Value: ' + val);
});
}
```