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));
}