Package Exports
- @loopback/rest-crud
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@loopback/rest-crud) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@loopback/rest-crud
REST API controller implementing default CRUD semantics.
Overview
This module allows applications to quickly expose models via REST API without having to implement custom controller or repository classes.
Installation
npm install --save @loopback/rest-crudBasic use
@loopback/rest-crud exposes two helper methods (defineCrudRestController and
defineCrudRepositoryClass) for creating controllers and respositories using
code.
For the examples in the following sections, we are assuming a model named
Product, and a datasource named db have already been created.
Creating a CRUD Controller
Here is how you would use defineCrudRestController for exposing the CRUD
endpoints of an existing model with a respository.
Create a REST CRUD controller class for your model.
const ProductController = defineCrudRestController< Product, typeof Product.prototype.id, 'id' >(Product, {basePath: '/products'});
Set up dependency injection for the ProductController.
inject('repositories.ProductRepository')(ProductController, undefined, 0);
Register the controller with your application.
app.controller(ProductController);
Creating a CRUD repository
Use the defineCrudRepositoryClass method to create named repositories (based
on the Model) for your app.
Usage example:
const ProductRepository = defineCrudRepositoryClass(Product);
this.repository(ProductRepository);
inject('datasources.db')(ProductRepository, undefined, 0);Integrated example
Here is an example of an app which uses defineCrudRepositoryClass and
defineCrudRestController to fulfill its repository and controller
requirements.
export class TryApplication extends BootMixin(
ServiceMixin(RepositoryMixin(RestApplication)),
) {
constructor(options: ApplicationConfig = {}) {
...
}
async boot():Promise<void> {
await super.boot();
const ProductRepository = defineCrudRepositoryClass(Product);
const repoBinding = this.repository(ProductRepository);
inject('datasources.db')(ProductRepository, undefined, 0);
const ProductController = defineCrudRestController<
Product,
typeof Product.prototype.id,
'id'
>(Product, {basePath: '/products'});
inject(repoBinding.key)(ProductController, undefined, 0);
this.controller(ProductController);
}
}Contributions
Tests
Run npm test from the root folder.
Contributors
See all contributors.
License
MIT