@heisterkamp/requestbuilder

1.0.8 • Public • Published

requestbuilder

Constructs a Json:api compliant url.

The module is available as a public package on npmjs.com. It will either be marked as a private package or moved to an npm library on GitLab.

Installation

npm install --save @heisterkamp/requestbuilder

Usage

  • import the RequestBuilder class
  • create a builder
  • compile with Webpack

>= v1.0.6

Features

Type Example
Equal to .where('location', 'Zwolle')
Not equal to .whereNot('location', 'Zwolle')
Less than .lessThan('mileage', 10000)
Less than or equal to .lessThanOrEqualTo('mileage', 10000)
Greater than .greaterThan('mileage', 10000)
Greater than or equal to .greaterThanOrEqualTo('mileage', 10000)
Is null .whereNull('location')
Is not null .whereNotNull('direction')
In .whereIn('location', 'Utrecht,Enschede,Rotterdam')
Not in .whereNotIn('location', 'Utrecht,Enschede,Rotterdam')
Sorting .sort('-mileage')
Projection .fields('id,trailer_number,')
Include subresource .include('sensors')

Example

import RequestBuilder from 'node_modules/@heisterkamp/requestbuilder/requestBuilder.module';

const host = '...';

// Get token and then do requests
let rb = new RequestBuilder(host + '/api/app/v1/auth');
rb.setMethod('POST');
rb.setBody({login: '...', password: '...'});

rb.get()
    .then(response => {

        let rb = new RequestBuilder(host + '/api/app/v1/trailers');
        rb.setHeaders({Authorization: 'Bearer ' + response.body.token});

        // All trailers
        rb
            .get()
            .then(response => { ... });

        // All trailers in Zwolle
        rb
            .where('location', 'Zwolle')
            .get()
            .then(response => { ... });

        rb.reset();

        // All trailer ids, numbers, license plates and mileage,
        //  in Utrecht, Enschede or Rotterdam,
        //  having a mileage lower than 10.000,
        //  including their sensor data,
        //  ordered on mileage descending.
        rb
            .fields('id,trailer_number,license_plate,mileage')
            .whereIn('location', 'Utrecht,Enschede,Rotterdam')
            .lessThan('mileage', 10000)
            .include('sensors')
            .sort('-mileage')
            .get()
            .then(response => { ... });
    });

< v1.0.6

Features

method function
where Add a where clause
whereNotNull Add a whereNotNull clause
greaterThanDateTime Filter on date
lessThanDateTime Filter on date
reset Reset the builder
get Get the data and process it with a callback

Example

import RequestBuilder from 'node_modules/@heisterkamp/requestbuilder/requestBuilder.module';

carService = 'http://***/api/v1/cars';
let requestBuilder = new RequestBuilder(`${carService}/123`)
    .with('positions')
    .where('location', 'Amsterdam')
    .whereNotNull('driverId')
    .greaterThanDateTime('positionTime', '2019-07-26T16:00:00+01:00')
    .get(this.processData.bind(this))
;

processData(data)
{
    console.log(JSON.parse(data));
}

Readme

Keywords

none

Package Sidebar

Install

npm i @heisterkamp/requestbuilder

Weekly Downloads

8

Version

1.0.8

License

ISC

Unpacked Size

442 kB

Total Files

8

Last publish

Collaborators

  • heisterkamp