# nest-rest-framework

Latest version **1.0.2** (published 2020-05-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install nest-rest-framework
pnpm add nest-rest-framework
yarn add nest-rest-framework
bun add nest-rest-framework
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2020-05-20 |
| First published | 2019-11-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 517.9 KB |
| Known vulnerabilities | 0 (+3 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 4 |
| Maintainers | kerryritter |
| Keywords | nest, rest |

## Links

- npm: https://www.npmjs.com/package/nest-rest-framework
- Repository: https://github.com/kerryritter/nest-rest-framework
- Issues: https://github.com/kerryritter/nest-rest-framework
- npm.io page: https://npm.io/package/nest-rest-framework

## Dependencies (7)

- [rxjs](https://npm.io/package/rxjs.md) ^6.5.3
- [lodash](https://npm.io/package/lodash.md) ^4.17.15
- [rimraf](https://npm.io/package/rimraf.md) ^3.0.0
- [@nestjs/core](https://npm.io/package/@nestjs/core.md) ^6.7.2
- [@nestjs/common](https://npm.io/package/@nestjs/common.md) ^6.7.2
- [reflect-metadata](https://npm.io/package/reflect-metadata.md) ^0.1.13
- [@nestjs/platform-express](https://npm.io/package/@nestjs/platform-express.md) ^6.7.2

## Recent versions

- 1.0.2 (latest) — 2020-05-20
- 0.0.1 (alpha) — 2019-11-14
- 1.0.1 — 2020-01-28
- 1.0.0 — 2019-11-19
- 0.0.3 — 2019-11-14
- 0.0.2 — 2019-11-14

## README

<p align="center">
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAACqCAYAAABxozHnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGqWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTA4LTEwVDE4OjM0OjM5LTA1OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE5LTA4LTEwVDE4OjM0OjM5LTA1OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0wOC0xMFQxODozNDozOS0wNTowMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplNGUyZjY1YS04ZTJmLWNiNDktYTAxNy1iMzQ2NzQ3NDcwYWEiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDowZjVlYjJmOS05NjQ0LWQ4NDItODJiNi00YTEwYmNjNzgyOWQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDphOTUwZDlmZS02NDVlLTI5NDgtODQ4Zi1jNDc0OWRkNjI5ZDIiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphOTUwZDlmZS02NDVlLTI5NDgtODQ4Zi1jNDc0OWRkNjI5ZDIiIHN0RXZ0OndoZW49IjIwMTktMDgtMTBUMTg6MzQ6MzktMDU6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZTRlMmY2NWEtOGUyZi1jYjQ5LWEwMTctYjM0Njc0NzQ3MGFhIiBzdEV2dDp3aGVuPSIyMDE5LTA4LTEwVDE4OjM0OjM5LTA1OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDxwaG90b3Nob3A6VGV4dExheWVycz4gPHJkZjpCYWc+IDxyZGY6bGkgcGhvdG9zaG9wOkxheWVyTmFtZT0ibmVzdCByZXN0IiBwaG90b3Nob3A6TGF5ZXJUZXh0PSJuZXN0IHJlc3QiLz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSJmcmFtZXdvcmsiIHBob3Rvc2hvcDpMYXllclRleHQ9ImZyYW1ld29yayIvPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOlRleHRMYXllcnM+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+sPdqagAAWVxJREFUeJztnXmYHFW5h9/qvWfNJASQKA1n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" alt="" />
</p>

  <p align="center"><a href="https://nest.com" target="blank">Nest</a> REST Framework is a toolkit for painlessly creating full-featured web APIs using the Nest framework. Inspired by Django REST Framework.</p>

## Installation

*Coming Soon*

```bash
$ npm install --save nest-rest-framework nest-rest-framework-[typeorm|mongoose]
```

## Nest REST Framework Concepts

### Controllers

The foundational belief of the NRF design is that the controller should be as absent of code and logic as possible. The controller's job in this pattern is the wire together pieces that do the real work: ViewSets, Transformers, and Hooks.

### ViewSets

The duty of the viewset is to manage the interactions with the data storage layer by implementing the `ViewSet` base. This logic should be free of mapping logic (transformers) or business logic (hooks). **Future state intention** is that Nest REST Framework offers quick-start ViewSets for tools such as TypeORM and Mongoose.

### Transformers

Transformers are object mappers. NRF has two types of transformers: data transformers and request transformers. **Future state intention** is that these transformers are optional for use-cases such as prototypes or data-viewer style apps -- this will allow for a very quick spin-up of full REST APIs.

#### Data Transformers

Data transformers should map the stored data object into a web API-friendly response format. Typically these types of objects are JSON interfaces. *Input*: database object. *Output*: web API response.

#### Request Transformers

Request transformers should map the incoming data request into the stored data object. *Input*: web API request. *Output*: database object.

### Hooks

Hooks are event registrations for specific use-cases. NRF has three types of hooks: auth hooks, save hooks, and error hooks.

#### Auth Hooks

Auth hooks are responsible for validating the request for authorization and authentication. For instance, is the user logged in? Does this user have access to take CRUD actions against this particular entity? Can data only be managed on Tuesdays? Auth hooks are agnostic and allow for any sort of validation and verification.

### Save Hooks

Save hooks are executed whenever data changes are made.

### Error hooks

Error hooks are executed whenever an error occurs during the controller request lifecycle. Creating an error hook allows for functionality such as custom responses, support ticket logging, or process logging. 

## Creating your first API

0. Create your data model class
```typescript
export class Todo {
  id: number;
  details: string;
  complete: boolean;
```

1. Create a data transformer class.
```typescript
export class TodoDataTransformer extends Transformer<Todo, TodoDto> {
  transform(input: Todo): TodoDto {
    const dto = {} as Todo;
    dto.id = input.id;
    dto.details = input.details;
    dto.complete = input.complete;
    return dto;
  }
}
```

2. Create a request transformer class.
```typescript
export class TodoRequestTransformer extends Transformer<TodoDto, Todo> {
  transform(input: TodoDto): Todo {
    const entity = new Todo();
    entity.id = input.id;
    entity.details = input.details;
    entity.complete = input.complete;
    return entity;
  }
}
```

3. Create a viewset class.
```typescript
export class TodoViewSet extends ViewSet<
  number,
  Todo
> {
}
```

4. Create your controller.

```typescript
@Controller('todo')
export class TodoController extends RestController<
  number,
  Todo,
  TodoDto,
  TodoDto
> {
  constructor(
    viewset: TodoViewSet,
    requestTransformer: TodoRequestTransformer,
    dataTransformer: TodoDataTransformer,
  ) {
    super({
      enableBatch: true,
      viewset,
      requestTransformer,
      dataTransformer,
    });
  }
}
```

## Support

Nest REST Framework is an MIT-licensed open source project. 

## Committing

Committing to this project requires Commit messages to be formatted according to the Angular
[conventional-changelog](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)

## Stay in touch

- Author - [Kerry Ritter](https://kerryritter.com)
- Author - [Benjamin Main](mailto::bam036036@gmail.com)
- Nest Website - [https://nestjs.com](https://nestjs.com/)
- Twitter - [@kerryritter](https://twitter.com/kerryritter)

## License

  Nest REST Framework is [MIT licensed](LICENSE).

---
_Source: https://npm.io/package/nest-rest-framework · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
