Construindo uma API REST com TypeScript e Express
TypeScript e Express são uma combinação poderosa para construir APIs REST robustas. TypeScript fornece segurança de tipo, melhores ferramentas e experiência de desenvolvimento aprimorada, enquanto Express é uma estrutura web minimalista para Node.js. Este guia explicará as etapas para construir uma API REST usando TypeScript e Express.
Configurando o Projeto
Comece criando um novo diretório para o projeto e inicializando um aplicativo Node.js.
mkdir typescript-express-api
cd typescript-express-api
npm init -y
Em seguida, instale as dependências necessárias para Express e TypeScript.
npm install express
npm install --save-dev typescript ts-node @types/node @types/express
Crie um arquivo tsconfig.json
para configurar o TypeScript. Execute o seguinte comando:
npx tsc --init
Modifique o arquivo tsconfig.json
para atender às necessidades do projeto, habilitando opções como "strict"
, "esModuleInterop"
e definindo o diretório de saída como "dist"
.
Criando o Servidor Expresso
Crie uma nova pasta chamada src
e dentro dela, crie um arquivo chamado index.ts
. Este arquivo servirá como ponto de entrada para o servidor Express.
import express, { Request, Response } from 'express';
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
app.get('/', (req: Request, res: Response) => {
res.send('Hello, TypeScript and Express!');
});
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
Para executar o servidor, use o seguinte comando:
npx ts-node src/index.ts
Definindo rotas de API
Crie uma nova pasta dentro de src
chamada routes
. Nessa pasta, crie um arquivo chamado userRoutes.ts
para definir rotas para lidar com solicitações relacionadas ao usuário.
import { Router, Request, Response } from 'express';
const router = Router();
router.get('/users', (req: Request, res: Response) => {
res.json({ message: 'Get all users' });
});
router.post('/users', (req: Request, res: Response) => {
const user = req.body;
res.json({ message: 'User created', user });
});
export default router;
No arquivo index.ts
, importe o userRoutes
e use-o no aplicativo.
import userRoutes from './routes/userRoutes';
app.use('/api', userRoutes);
Criando uma camada de controlador e serviço
Organize o código criando camadas separadas para controladores e serviços. Crie duas novas pastas dentro de src
: controllers
e services
.
Na pasta controllers
, crie um arquivo chamado userController.ts
.
import { Request, Response } from 'express';
import { getAllUsers, createUser } from '../services/userService';
export const getUsers = (req: Request, res: Response) => {
const users = getAllUsers();
res.json(users);
};
export const addUser = (req: Request, res: Response) => {
const newUser = req.body;
const user = createUser(newUser);
res.json(user);
};
Na pasta services
, crie um arquivo chamado userService.ts
.
interface User {
id: number;
name: string;
}
let users: User[] = [];
export const getAllUsers = (): User[] => {
return users;
};
export const createUser = (user: User): User => {
users.push(user);
return user;
};
Atualize userRoutes.ts
para usar estes controladores:
import { Router } from 'express';
import { getUsers, addUser } from '../controllers/userController';
const router = Router();
router.get('/users', getUsers);
router.post('/users', addUser);
export default router;
Testando a API REST
Para testar a REST API, use uma ferramenta como Postman ou curl para enviar solicitações aos endpoints. Inicie o servidor e faça uma solicitação GET para /api/users
e uma solicitação POST para /api/users
com um payload JSON.
Conclusão
Seguindo essas etapas, uma API REST pode ser criada usando TypeScript e Express. TypeScript adiciona segurança de tipo e uma melhor experiência de desenvolvimento, enquanto Express fornece uma estrutura simples e poderosa para construir serviços RESTful. Essa configuração pode ser aprimorada ainda mais adicionando validação, tratamento de erros e lógica de negócios mais complexa.