
Security News
Feross on Risky Business Weekly Podcast: npm’s Ongoing Supply Chain Attacks
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
@flowup/ng2-api
Advanced tools
Ng2-api is a package that allows to consume Http JSON APIs while retaining type-safety.
Ng2-api is a package that allows to consume Http JSON APIs while retaining type-safety.
You can install ng2-api via
$ yarn add @flowup/ng2-api
$ npm install @flowup/ng2-api --save
:robot: Please follow the Basic usage for the full example.
Ng2API supports GET, POST, PUT and DELETE calls in it's base. All methods can be called on
a single model or array, e.g.: get(modelArray)
or getSingle(model)
.
1) Initialize the module:
import { NgModule } from '@angular/core';
import { Ng2APIModule } from '@flowup/ng2-api';
@NgModule({
imports: [
Ng2APIModule.forRoot('base_serve_url.com', [
'BookResource', 'UserResource' // resources to be initialized
])
]
})
class AppModule {
}
2) Define a model and a service afterwards
import { APIConfig, Resource } from '@flowup/ng2-api';
import { Injectable, Inject } from '@angular/core';
import { Observable } from 'rxjs';
const USER_API_ENDPOINT = '/users';
// api endpoint model
export interface User {
email: string,
id?: number
}
@Injectable()
export class UserService {
// inject desired resources to the user service,
// the name of resource specified in @Inject is one of specified in module
constructor(@Inject('UserResource') private users: Resource<User>) {
this.users.setResourceBase(USER_API_ENDPOINT);
}
getUserById(id: number): Observable<User> {
// args will be added into the url: /users/:id
return this.users.getSingle({args: [id]});
}
createUser(user: User): Observable<User> {
// pass the user object as model
return this.users.create(user);
}
}
3) Use the service within a component
@Component({...})
class MyComponent {
constructor(private users: UserService) {
}
createUser(user: User) {
let user = this.users.createUser(user);
}
getUserById(id: number) {
let user = this.users.getUserById(id);
}
}
**Use Resource in ngrx/effect **
const BOOK_API_ENDPOINT = '/books'
@Injectable()
export class BooksEffect {
constructor(private actions: Actions, @Inject('BookResource') private books: Resource<Book>) {
this.books.setResourceBase(BOOK_API_ENDPOINT);
}
@Effect() getNotifications: Observable<Action> = this.actions
.ofType('GET_BOOKS')
.switchMap(() => this.books.get()
.map(response =>({type: 'GET_BOOKS_SUCCESSFUL', payload: response}))
.catch(err => Observable.of({type: 'GET_BOOKS_FAILURE', payload: err})));
}
Another way of usage is extend Resource class
class BookService extends Resource<Book> {
// inject and pass config, http and relative path to the Resource
constructor(config: APIConfig, http: Http) {
// initialize Resource
super(config, http, '/users');
}
}
For more examples visit the Cookbook
Run yarn build
to build the project. The build artifacts will be stored in the dist/
directory.
Run yarn test
to execute unit and e2e tests.
If you would like to contribute, read first through Angular contribution guidelines. Get the repository
$ git clone https://github.com/flowup/ng2-api.git
FAQs
Ng2-api is a package that allows to consume Http JSON APIs while retaining type-safety.
We found that @flowup/ng2-api demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.
Research
/Security News
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.