Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/samiracavalcanti/desafio-it-talent-backend
https://github.com/samiracavalcanti/desafio-it-talent-backend
Last synced: 13 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/samiracavalcanti/desafio-it-talent-backend
- Owner: SamiraCavalcanti
- Created: 2024-06-18T06:50:32.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-12-07T00:24:53.000Z (about 1 month ago)
- Last Synced: 2024-12-07T01:23:22.962Z (about 1 month ago)
- Language: JavaScript
- Size: 93.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 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:
```sh
git clone
cd your-project
```2. Instale as dependências:
```sh
npm install
```3. Configure as variáveis de ambiente no arquivo `.env` conforme mostrado acima.
#### Estrutura de Arquivos
##### `src/database.js`
```javascript
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`
```javascript
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:
```sh
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`
```sh
curl -X GET http://localhost:8080/alunos
```#### `GET /aluno/:id`
```sh
curl -X GET http://localhost:8080/aluno/1
```#### `POST /alunos`
```sh
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](LICENSE) para mais detalhes.### Contato
Se você tiver alguma dúvida, sinta-se à vontade para abrir uma issue ou entrar em contato.