
Research
/Security News
Popular Go Decimal Library Targeted by Long-Running Typosquat with DNS Backdoor
A long-running Go typosquat impersonated the popular shopspring/decimal library and used DNS TXT records to execute commands.
@loopback/rest-crud
Advanced tools
REST API controller implementing default CRUD semantics.
This module allows applications to quickly expose models via REST API without having to implement custom controller or repository classes.
npm install --save @loopback/rest-crud
@loopback/rest-crud can be used along with the built-in ModelApiBooter to
easily create a repository class and a controller class for your model. The
following use is a simple approach for this creation, however, you can look at
the "Advanced use" section instead for a more flexible approach.
For the examples in the following sections, we are assuming a model named
Product and a datasource named db have already been created.
In your src/application.ts file:
// add the following import
import {CrudRestComponent} from '@loopback/rest-crud';
export class TryApplication extends BootMixin(
ServiceMixin(RepositoryMixin(RestApplication)),
) {
constructor(options: ApplicationConfig = {}) {
// other code
// add the following line
this.component(CrudRestComponent);
}
}
Create a new file for the configuration, e.g.
src/model-endpoints/product.rest-config.ts that defines the model,
pattern, dataSource, basePath, and readonly properties:
import {ModelCrudRestApiConfig} from '@loopback/rest-crud';
import {Product} from '../models';
module.exports = <ModelCrudRestApiConfig>{
model: Product,
pattern: 'CrudRest', // make sure to use this pattern
dataSource: 'db',
basePath: '/products',
readonly: false,
};
Now your Product model will have a default repository and default controller
class defined without the need for a repository or controller class file.
If you would like more flexibility, e.g. if you would only like to define a
default CrudRest controller or repository, you can use the two helper methods
(defineCrudRestController from @loopback/rest-crud and
defineCrudRepositoryClass from @loopback/repository). These functions will
help you create controllers and repositories using code.
For the examples in the following sections, we are also assuming a model named
Product, and a datasource named db have already been created.
Here is how you would use defineCrudRestController for exposing the CRUD
endpoints of an existing model with a repository.
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);
Use the defineCrudRepositoryClass method to create named repositories (based
on the Model) for your app.
Usage example:
import {defineCrudRepositoryClass} from '@loopback/repository';
const ProductRepository = defineCrudRepositoryClass(Product);
this.repository(ProductRepository);
inject('datasources.db')(ProductRepository, undefined, 0);
Here is an example of an app which uses defineCrudRepositoryClass and
defineCrudRestController to fulfill its repository and controller
requirements.
import {defineCrudRepositoryClass} from '@loopback/repository';
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);
}
}
Run npm test from the root folder.
See all contributors.
MIT
FAQs
REST API controller implementing default CRUD semantics
We found that @loopback/rest-crud demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers 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.

Research
/Security News
A long-running Go typosquat impersonated the popular shopspring/decimal library and used DNS TXT records to execute commands.

Research
Active npm supply chain attack compromises @antv packages in a fast-moving malicious publish wave tied to Mini Shai-Hulud.

Security News
/Research
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.