Crie sua API REST usando Typescript com ProtonType

Express + Sequelize + TypeScript = ProtonType

Por Humberto Machado em 15-11-2016

Protontype é um módulo Node que ajuda na criação de APIs RESTfull. Tem como objetivo facilitar a criação de objetos de banco de dados, rotas, middlewares e autenticação, tudo isso usando Typescript

Quick Start - Criando uma API em 5 passos

Estrutura de pastas e configurações iniciais

1
2
3
4
5
6

mkdir proton-quickstart
cd proton-quickstart
npm init
mkdir src
npm install protontype --save

Criar o arquivo tsconfig.json na raiz do projeto

1
2
3
4
5
6
7
8
9
10
11
12
13
14

{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"outDir": "dist"
},
"exclude": [
"node_modules",
"dist"
]
}

Model

Criar um arquivo ParticlesModel.ts

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

import { BaseModel, SequelizeBaseModelAttr, Model, DataTypes } from 'protontype';

@Model({
name: "Particles",
definition: {
name: {
type: DataTypes.STRING
},
symbol: {
type: DataTypes.STRING
},
mass: {
type: DataTypes.BIGINT
}

}
})
export class ParticlesModel extends BaseModel<Particle> {

}

export interface Particle extends SequelizeBaseModelAttr {
name: string;
symbol: string;
mass: number;
}

Router

Criar arquivo ParticlesRouter.ts

1
2
3
4
5
6
7
8
9
10
11

import { ParticlesModel } from './ParticlesModel';
import { BaseCrudRouter, RouterClass } from 'protontype';

@RouterClass({
baseUrl: '/particles',
modelInstances: [new ParticlesModel()]
})
export class ParticlesRouter extends BaseCrudRouter {

}

Main

Criar arquivo Main.ts

1
2
3
4
5
6
7

import { ParticlesRouter } from './ParticlesRouter';
import { ProtonApplication } from 'protontype';

new ProtonApplication()
.addRouter(new ParticlesRouter())
.bootstrap();

Compilando e Rodando Aplicação

1
2
3

tsc
node dist/Main.ts

Testando a API

Por padrão, a aplicação usará um banco de dados sqlite.
Será criado um arquivo proton.sqlite na raiz do projeto.

Os endpoints abaixo já estarão disponíveis:

  • GET /particles - Lista todos os registos da tabela Particles
  • POST /particles - Cria um registro na tabela Particles
  • GET /particles/:id - Consulta um registro da tabela Particles
  • PUT /particles/:id - Atualiza um registro da tabela Particles
  • DELETE /particles/:id - Remove um registro da tabela Particles

Podera testar através do app Postman ou outro da sua preferência.

Código completo do quick start

https://github.com/linck/proton-quickstart

Exemplo

https://github.com/linck/protontype-example

Projeto

https://github.com/linck/protontype

Documentação

https://linck.github.io/protontype-docs