1
resposta

Duvidas na construção da API

Boa noite tudo bem?

Minha duvida é o seguinte, nesse curso ele ja construiu a API, estou fazendo um projeto particular seguindo as orientações do curso, como nesse curso a API ja esta pronta, para projetos futuros, o server.js vou encaminhar o codigo pronto que veio do curso:

const fs = require('fs')
const bodyParser = require('body-parser')
const jsonServer = require('json-server')
const jwt = require('jsonwebtoken')

const server = jsonServer.create()
const router = jsonServer.router('./database.json')
let userdb = JSON.parse(fs.readFileSync('./usuarios.json', 'UTF-8'))

server.use(bodyParser.urlencoded({ extended: true }))
server.use(bodyParser.json())
server.use(jsonServer.defaults());

const SECRET_KEY = '123456789'

function createToken(payload, expiresIn = '12h') {
  return jwt.sign(payload, SECRET_KEY, { expiresIn })
}

function verifyToken(token) {
  return jwt.verify(token, SECRET_KEY, (err, decode) => decode !== undefined ? decode : err)
}

function usuarioExiste({ email, senha }) {
  return userdb.usuarios.findIndex(user => user.email === email && user.senha === senha) !== -1
}

function emailExiste(email) {
  return userdb.usuarios.findIndex(user => user.email === email) !== -1
}

server.post('/public/registrar', (req, res) => {
  const { email, senha, nome, endereco, complemento, cep } = req.body;

  if (emailExiste(email)) {
    const status = 401;
    const message = 'E-mail já foi utilizado!';
    res.status(status).json({ status, message });
    return
  }

  fs.readFile("./usuarios.json", (err, data) => {
    if (err) {
      const status = 401
      const message = err
      res.status(status).json({ status, message })
      return
    };

    const json = JSON.parse(data.toString());

    const last_item_id = json.usuarios.length > 0 ? json.usuarios[json.usuarios.length - 1].id : 0;

    json.usuarios.push({ id: last_item_id + 1, email, senha, nome, endereco, complemento, cep });
    fs.writeFile("./usuarios.json", JSON.stringify(json), (err) => {
      if (err) {
        const status = 401
        const message = err
        res.status(status).json({ status, message })
        return
      }
    });
    userdb = json
  });

  const access_token = createToken({ email, senha })
  res.status(200).json({ access_token })
})

server.post('/public/login', (req, res) => {
  const { email, senha } = req.body;
  if (!usuarioExiste({ email, senha })) {
    const status = 401
    const message = 'E-mail ou senha incorretos!'
    res.status(status).json({ status, message })
    return
  }
  const access_token = createToken({ email, senha })
  let user = { ...userdb.usuarios.find(user => user.email === email && user.senha === senha) }
  delete user.senha
  res.status(200).json({ access_token, user })
})

Esse codigo o professor ira fazer com a gente durante o curso ensinando como fazer ou ele ja vem pronto?

1 resposta

Salve, Hudson!

Nesse caso, o código já vem pronto e é um um backend mockado, feito pra funcionar somente em ambiente de desenvolvimento.

Se você quiser saber mais sobre o lado do backend, eu te recomendo a formação Nest.js: aplicações Node.js eficientes e escaláveis do lado do servidor.

Se você não quiser mergulhar tão fundo do lado do servidor, eu te recomendo o curso React: integração com Supabase e conceitos de arquitetura limpa na prática, onde a gente usa o Supabase como backend, e ele cuida pra gente da gestão de usuário e dos dados.