Skip to content

moisesAlc/Backend-IT_Talent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claro! Aqui está um exemplo de um README bem documentado para o seu projeto.

Projeto de Gerenciamento de Alunos

Descrição

Este projeto consiste em uma API de gerenciamento de alunos, construída com Node.js, Express, e MySQL. A API permite listar todos os alunos, obter detalhes de um aluno específico e adicionar novos alunos.

Estrutura do Projeto

your-project/
├── node_modules/
├── public/
├── src/
│   ├── database.js
│   ├── index.js
│   └── .env
├── package.json
└── README.md

Dependências

O projeto utiliza as seguintes dependências:

  • express
  • body-parser
  • cors
  • mysql2
  • dotenv

Configuração do Banco de Dados

Crie um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:

MYSQL_IP=localhost
MYSQL_USER=root
MYSQL_ROOT_PASSWORD=yourpassword
MYSQL_DATABASE=yourdatabase

Configuração do Projeto

Instalação

  1. Clone o repositório:

    git clone <URL_DO_REPOSITORIO>
    cd your-project
  2. Instale as dependências:

    npm install
  3. Configure as variáveis de ambiente no arquivo .env conforme mostrado acima.

Estrutura de Arquivos

src/database.js
import mysql from 'mysql2';
import dotenv from 'dotenv';

dotenv.config();

const pool = mysql.createPool({
    host: process.env.MYSQL_IP,
    user: process.env.MYSQL_USER,
    password: process.env.MYSQL_ROOT_PASSWORD,
    database: process.env.MYSQL_DATABASE,
}).promise();

export async function getAlunos() {
    const result = await pool.query(`SELECT * FROM ALUNOS;`);
    return result[0];
}

export async function getAluno(id) {
    const result = await pool.query(`
    SELECT * 
    FROM ALUNOS
    WHERE id = ?;
    `, [id]);
    return result[0];
}

export async function createAluno(nome, idade, cidade) {
    const result = await pool.query(`
    INSERT INTO ALUNOS (nome, idade, cidade)
    VALUES (?, ?, ?);
    `, [nome, idade, cidade]);
    const id = result[0].insertId;
    return getAluno(id);
}
src/index.js
import express from "express";
import bodyParser from "body-parser";
import cors from "cors";
import { getAluno, getAlunos, createAluno } from './database.js';

const app = express();

app.use(bodyParser.json());
app.use(cors());

app.get("/alunos", async (req, res) => {
    const alunos = await getAlunos();
    res.send(alunos);
});

app.get("/aluno/:id", async (req, res) => {
    const id = req.params.id;
    const aluno = await getAluno(id);
    res.send(aluno);
});

app.post("/alunos", async (req, res) => {
    const { nome, idade, cidade } = req.body;
    const aluno = await createAluno(nome, idade, cidade);
    res.status(201).send(aluno);
});

app.listen(8080, () => {
    console.log('O servidor está executando na porta 8080');
});

Executando o Projeto

  1. Certifique-se de que o MySQL está rodando e que o banco de dados especificado no .env está criado.

  2. Para iniciar o servidor, execute:

    npm start
  3. O servidor estará rodando na porta 8080. Você pode acessar os seguintes endpoints:

    • GET /alunos: Retorna todos os alunos.
    • GET /aluno/:id: Retorna os detalhes de um aluno específico.
    • POST /alunos: Adiciona um novo aluno. Espera um JSON no corpo da requisição com os campos nome, idade, e cidade.

Exemplos de Requisições

GET /alunos

curl -X GET http://localhost:8080/alunos

GET /aluno/:id

curl -X GET http://localhost:8080/aluno/1

POST /alunos

curl -X POST http://localhost:8080/alunos -H "Content-Type: application/json" -d '{"nome":"João", "idade":27, "cidade":"Salvador"}'

Contribuindo

Se você deseja contribuir com o projeto, por favor, siga as instruções abaixo:

  1. Faça um fork do projeto.
  2. Crie uma nova branch (git checkout -b feature/nova-feature).
  3. Faça suas alterações e commite (git commit -am 'Adiciona nova feature').
  4. Envie para o branch (git push origin feature/nova-feature).
  5. Abra um Pull Request.

Licença

Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para mais detalhes.

Contato

Se você tiver alguma dúvida, sinta-se à vontade para abrir uma issue ou entrar em contato.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published