/ng2-vs-backend

Module to create API Backends for Angular 2

Primary LanguageTypeScriptMIT LicenseMIT

Very simple Backend for Angular 2

Build Status GitHub license

Demo

https://llafuente.github.io/ng2-vs-backend/demo/

Table of contents

About

Module to create Mock API Backends for Angular 2, and if there is no handler found do a XHR.

Installation

Install through npm:

npm install --save ng2-vs-backend

Import VSBackendModule in your module

import {NgModule} from '@angular/core';
import {BackendService} from './backendservice';
import {VSBackendModule} from 'ng2-vs-backend';

@NgModule({
  imports: [VSBackendModule],
  providers: [
    BackendService, // this extends BackendBaseService
  ]
})
export class YourModule {
  constructor(backendService: BackendService) {
    backendService.init(); // initialize now!
  }
}

Extend BackendBaseService with your API declaration.

import {BackendBaseService, ParsedRequest} from 'ng2-vs-backend';
import {Injectable} from '@angular/core';
import {MockBackend} from '@angular/http/testing';
import {
  BaseRequestOptions,
  ResponseOptions,
  Headers,
  XHRBackend,
  RequestOptions,
} from '@angular/http';

@Injectable()
export class BackendService extends BackendBaseService {
  constructor(
    public backend: MockBackend,
    public options: BaseRequestOptions,
    public realBackend: XHRBackend
  ) {
    super(backend, options, realBackend);
  }

  init(): void {
    super.init();
    // just return a value
    let countries: any[] = [
      {id: 1, label: 'Spain'},
      {id: 2, label: 'France'},
    ];
    this.addValue('GET', '/api/v1/countries', countries);

    this.addValuePaginated('GET', '/api/v1/countries2', countries);

    // handle request yourself, for example to update a country
    backendService.addListener('POST', /\/api\/v1\/country\/(.*)/, (p: ParsedRequest, matches: string[]) => {
      // matches is the result of the RegExp sent
      let id: number = parseInt(matches[1], 10);

      countries[id].label = p.body.label;

      return new ResponseOptions({
        status: 204
      });
    });
  }
}

You may also find it useful to view the demo source.

Usage without a module bundler

<script src="node_modules/dist/umd/ng2-vs-backend/ng2-vs-backend.js"></script>
<script>
    // everything is exported VSBackend namespace
</script>

Documentation

All documentation is auto-generated from the source via typedoc and can be viewed here: https://llafuente.github.io/ng2-vs-backend/docs/

Development

Prepare your environment

  • Install Node.js and NPM (should come with)
  • Install local dev dependencies: npm install while current directory is this repo

Development server

Run npm start to start a development server on port 8000 with auto reload + tests.

Testing

Run npm test to run tests once or npm run test:watch to continually run tests.

Release

  • Bump the version in package.json (once the module hits 1.0 this will become automatic)
npm run release

License

MIT