0% acharam este documento útil (0 voto)
17 visualizações4 páginas

Guia Api Crud MVC Mysql Final

Este documento é um guia passo a passo para criar uma API CRUD utilizando Node.js, Express, Sequelize e MySQL, seguindo o padrão MVC. Ele abrange a estrutura de pastas, configuração do banco de dados, definição de modelos, criação de controladores e rotas, além de instruções para testar a API. O documento também inclui um script SQL opcional para a criação do banco de dados e tabela necessária.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
17 visualizações4 páginas

Guia Api Crud MVC Mysql Final

Este documento é um guia passo a passo para criar uma API CRUD utilizando Node.js, Express, Sequelize e MySQL, seguindo o padrão MVC. Ele abrange a estrutura de pastas, configuração do banco de dados, definição de modelos, criação de controladores e rotas, além de instruções para testar a API. O documento também inclui um script SQL opcional para a criação do banco de dados e tabela necessária.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 4

Criando sua Primeira API CRUD com Node.

js,
Express, Sequelize, MVC e MySQL

Guia passo a passo para criar uma API RESTful organizada no padrão MVC utilizando [Link],
Express, Sequelize e MySQL.

■ Estrutura de Pastas

api-crud-mvc-mysql/
■■■ config/
■ ■■■ [Link]
■■■ models/
■ ■■■ [Link]
■■■ controllers/
■ ■■■ [Link]
■■■ routes/
■ ■■■ [Link]
■■■ [Link]
■■■ [Link]

■ Parte 1: Preparando o Projeto

mkdir api-crud-mvc-mysql
cd api-crud-mvc-mysql
npm init -y
npm install express cors sequelize mysql2
npm install -D nodemon

■ Parte 2: Configuração do Banco de Dados

// config/[Link]
import { Sequelize } from "sequelize";

const sequelize = new Sequelize("api_crud_mvc", "root", "sua_senha", {


host: "localhost",
dialect: "mysql",
logging: false
});

export default sequelize;

■ Parte 3: Definindo o Modelo

// models/[Link]
import { DataTypes } from "sequelize";
import sequelize from "../config/[Link]";

const Task = [Link]("Task", {


id: { type: [Link], autoIncrement: true, primaryKey: true },
title: { type: [Link], allowNull: false },
description: { type: [Link], allowNull: true },
completed: { type: [Link], defaultValue: false }
}, { timestamps: true });

export default Task;

■ Parte 4: Criando os Controllers

// controllers/[Link]
import Task from "../models/[Link]";

export const createTask = async (req, res) => {


try {
const { title, description, completed } = [Link];
const task = await [Link]({ title, description, completed });
[Link](201).json(task);
} catch (error) {
[Link](400).json({ message: "Erro ao criar tarefa", error: [Link] });
}
};

export const getTasks = async (req, res) => {


try {
const tasks = await [Link]();
[Link](200).json(tasks);
} catch (error) {
[Link](500).json({ message: "Erro ao buscar tarefas", error: [Link] });
}
};

export const getTaskById = async (req, res) => {


try {
const { id } = [Link];
const task = await [Link](id);
if (task) [Link](200).json(task);
else [Link](404).json({ message: "Tarefa não encontrada" });
} catch (error) {
[Link](500).json({ message: "Erro ao buscar tarefa", error: [Link] });
}
};

export const updateTask = async (req, res) => {


try {
const { id } = [Link];
const { title, description, completed } = [Link];
const task = await [Link](id);
if (task) {
[Link] = title ?? [Link];
[Link] = description ?? [Link];
[Link] = completed ?? [Link];
await [Link]();
[Link](200).json(task);
} else [Link](404).json({ message: "Tarefa não encontrada" });
} catch (error) {
[Link](400).json({ message: "Erro ao atualizar tarefa", error: [Link] });
}
};

export const deleteTask = async (req, res) => {


try {
const { id } = [Link];
const task = await [Link](id);
if (task) {
await [Link]();
[Link](204).send();
} else [Link](404).json({ message: "Tarefa não encontrada" });
} catch (error) {
[Link](500).json({ message: "Erro ao deletar tarefa", error: [Link] });
}
};

■■ Parte 5: Definindo as Rotas

// routes/[Link]
import express from "express";
import { createTask, getTasks, getTaskById, updateTask, deleteTask } from "../controllers/[Link]"

const router = [Link]();


[Link]("/tasks", createTask);
[Link]("/tasks", getTasks);
[Link]("/tasks/:id", getTaskById);
[Link]("/tasks/:id", updateTask);
[Link]("/tasks/:id", deleteTask);

export default router;

■ Parte 6: Arquivo Principal

// [Link]
import express from "express";
import cors from "cors";
import sequelize from "./config/[Link]";
import taskRoutes from "./routes/[Link]";

const app = express();


const port = 3333;

[Link](cors());
[Link]([Link]());
[Link](taskRoutes);

try {
await [Link]();
[Link]("■ Conexão com MySQL estabelecida!");
await [Link]();
[Link]("■ Modelos sincronizados!");
} catch (error) {
[Link]("■ Erro ao conectar ao banco:", error);
}

[Link](port, () => {
[Link](`■ Servidor rodando em [Link]
});

■ Parte 7: Testando a API

Use Postman ou Insomnia para testar os endpoints:


- POST /tasks → cria uma nova tarefa
- GET /tasks → retorna todas
- GET /tasks/:id → retorna uma específica
- PUT /tasks/:id → atualiza
- DELETE /tasks/:id → deleta
■ Script SQL Inicial (opcional)

CREATE DATABASE api_crud_mvc;


USE api_crud_mvc;

CREATE TABLE Tasks (


id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
completed BOOLEAN DEFAULT FALSE,
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Você também pode gostar