- Notifications
You must be signed in to change notification settings - Fork16
ngx-api-utils is a lean library of utilities and helpers to quickly integrate any HTTP API (REST, Ajax, and any other) with Angular.
License
ngx-api-utils/ngx-api-utils
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
ngx-api-utils is a lean library of utilities and helpers to quickly integrate any HTTP API (REST, Ajax, and any other) withAngular.
Inspired by:
- https://github.com/auth0/angular2-jwt
- https://angular.io/guide/http#intercepting-requests-and-responses.
Thanks to the respective developers, people and contributors of:
- Angular 6+
- @angular/cli andit's latest capabilities of creating and maintaining libraries
- local fork of fake-api-jwt-json-server fromhttps://github.com/techiediaries/fake-api-jwt-json-server based on this wonderful articlehttps://www.techiediaries.com/fake-api-jwt-json-server/ and utilizing this awesomehttps://github.com/typicode/json-server
- VS Code
To install the package from npm - runnpm install ngx-api-utils
import{NgxApiUtilsModule}from'ngx-api-utils';@NgModule({ ...imports:[NgxApiUtilsModule,...] ...})exportclassAppModule{}
The package consists of couple of main services and a module that you would use:
AuthTokenServiceto allow you to easily work with any kind of tokens, including but not limited to JWT, Oauth2 with JWT container, etc.- which you would provide with a proper
TokenDecoder - you would also like to provide with proper
TokenPayloadby extending it with the properties you have in the token especially if you are usingJWT Token or other that can contain relevant for your application information - you might want to provide it with your custom
TokenStorageimplementation especially if you are not happy with the defaultlocalStorage
- which you would provide with a proper
ApiHttpServicethat behaves 100% like Angular'sHttpClient, but helps you by utilizing for you- the
AuthTokenServiceinternally and sending the token on each request usingApiAuthorizationHeaderInterceptor - also allows you to set API base url, by providing where the HTTP API is thanks to
API_HTTP_BASE_URL - also allows you to set default HTTP headers with
ApiDefaultHeadersInterceptor - also only in case needed you can plug
ApiErrorsInterceptorand read through it the last error - or even better - have your own implementation of any interceptor you need - to handle errors, transform results or anything you would the same way you would do for Angular's
HttpClient, just provide it like the defaults are provided withAPI_HTTP_INTERCEPTORSinjection token e.g.{provide: API_HTTP_INTERCEPTORS, useClass: YourCoolInterceptor, multi: true}to line up with the rest of the default providedAPI_HTTP_INTERCEPTORS
- the
ApiAuthGuardServicethat is a perfectly sane option of you just have public and private part that needs to be protected based onAuthTokenServicevalidity and you want a bit more- you can of course configure it with urls for
API_AUTH_GUARD_URL_FOR_AUTHENTICATEDandAPI_AUTH_GUARD_URL_FOR_AUTHENTICATION, also a RegExp forAPI_AUTH_GUARD_PUBLIC_ONLY_ROUTES
- you can of course configure it with urls for
NgxApiUtilsModulethat provides a default set of interceptors forAPI_HTTP_INTERCEPTORSused by theApiHttpServicewhich you can configure through providing your own values for the relevant injection tokens
For more details, please check:
- theDemo app (TBD)
- the keyngx-api-utils specs
This repository contains aDemo app (TBD) that is intended to show a bit more complex app and how thengx-api-utils package fits in.
In the demo beside the usage ofngx-api-utils I would strongly recommend checking:
- the overall structure of well organized lazy loaded moduleshttps://github.com/ngx-api-utils/ngx-api-utils/tree/master/src/app though the router configurations
- the overall multi-layout system for the UI (HTML/CSS), that allows you to have different UI layouts for the different app sections (roles)
- the overall way how to organize your services around and build object models that utilize the
ngx-api-utils(TBD)
The project uses the following things, you should get familiar with:
- @angular/cli's capabilities of creating and maintaining libraries
- local fork of this repositoryhttps://github.com/techiediaries/fake-api-jwt-json-server based on this wonderful articlehttps://www.techiediaries.com/fake-api-jwt-json-server/ and utilizing this awesomehttps://github.com/typicode/json-server
- custom set of scripts that you can checkhttps://github.com/ngx-api-utils/ngx-api-utils/blob/master/package.json#scripts that allows you to:
- start the Demo app with
npm run start - run the whole set of linters
npm run start - run the e2e tests of the Demo app
npm run e2e(TBD) - build the
ngx-api-utilspackage itself throughnpm run ngx-api-utils:build - or run it's unit and integration tests through
npm run ngx-api-utils:test - and more, please do check the scripts
- start the Demo app with
Please feel free to submit PRs for the following things:
- test coverage - unit; integration tests; e2e tests on the demo app;
- demo project - showing the package in action in a bit more advanced architecture of modules and routing, namely public section, customer section, admin section of the app
- demo project fake api - needs updates according to what the demo would show
- contribute further - any additional features and bug fixes
We highly appreciate your contribution!
About
ngx-api-utils is a lean library of utilities and helpers to quickly integrate any HTTP API (REST, Ajax, and any other) with Angular.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors4
Uh oh!
There was an error while loading.Please reload this page.