npm.io
1.1.5 • Published 7 years ago

ngx-endpoints

Licence
MIT
Version
1.1.5
Deps
4
Size
426 kB
Vulns
0
Weekly
0

ngx-endpoints

load data from url-endpoints dynamically at runtime

Demo

https://pharindoko.github.io/ngx-endpoints/sample

Installation

NPM

npm install ngx-endpoints --save

YARN

yarn add ngx-endpoints

Technical Documentation

https://pharindoko.github.io/ngx-endpoints/documentation

Usecase

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

Dependencies

Makes use of following packages:

  • moment.js
  • moment-relativism
  • query-string

How to integrate into a component

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 | false | boolean |false | convertDatesOutputFormat | moment.js format will be used for conversion before url request will be started | - | string |false

Example
  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
}];
1. Import Module
...
import { NgxEndpointsModule} from 'ngx-endpoints';
...


@NgModule({
  declarations: [
  ],
  imports: [
    ...
    NgxEndpointsModule,
  ],
  providers: [],
  bootstrap: []
})
export class AppModule { }
2. Import Classes
import {NgxEndPoint, NgxEndPointDataProviderService, NgxEndPointData, NgxEndpointService} from 'ngx-endpoints';
3. Inject NgxEndpointService and NgxEndPointDataProviderService
constructor(protected endpointservice: NgxEndpointService, protected endpointdataprovider: NgxEndPointDataProviderService) { }
4. Use it in code directly
  • Basic Example
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);
  });
}

Keywords