Skip to content

API foi construída no padrão RESTful usando Node com Express, TypeScript, POO, SOLID, DDD. É um sistema de vendas de itens medievais, utilizei MySQL para a gerenciamento do banco dados.

Notifications You must be signed in to change notification settings

yuryss98/POO-SOLID-DDD-Api

Repository files navigation

Boas vindas ao repositório do projeto POO-SOLID-DDD-Api!


Este foi meu primeiro projeto usando TypeScript e aproveitei tambem para poder praticar POO, SOLID e DDD. Neste projeto desenvolvi uma API para simular uma loja de itens medievais!

A aplicação foi desenvolvida em Node usando o framework express e o pacote mysql2 para fazer um CRUD no banco de dados;

A Api foi desenvolvida usando o Paradigma da Orientação a Objetos (POO), seguindo os principios SOLID e o design de software DDD (domain driven design)

Desenvolvi endpoints que estão conectados ao banco de dados seguindo os princípios do REST;

🛠 Tecnologias usadas:

  • TypeScript;
  • Docker;
  • Express;
  • Node;
  • Mysql2;

Execute localmente (é preciso ter o docker instalado):

Clone o projeto

git clone git@github.com:yuryss98/project-trybesmith.git

Vá para o diretório do projeto:

cd POO-SOLID-DDD-Api

Execute os seguintes comandos:

docker-compose up -d
docker exec -it trybesmith bash
npm install
npm run build
npm start

Depois de executar todos os comandos, ja teremos uma aplicação rodando na porta 3000, agora basta usar as query mysql no arquivo Trybesmith.sql para gerar o banco de dados da aplicação e popula-lo. A senha para se conectar com o banco de dados do container docker é "password";

giff

Endpoints: todos os endpoints são acessiveis a partir da rota http://localhost:3000

GET /products -- O método GET em /products é usado para listar todos os produtos da aplicação;
GET /orders -- O método GET em /orders é usado para listar todos os pedidos da aplicação juntamente com o usuario que o solicitou;
POST /users

-- O método POST em /users é usado para criar um usuario, quando criado com sucesso retorna um token, token esse que é usado para poder acessar outras rotas da api, aceita 4 campos, sendo eles:

-- username: campo do tipo texto -CAMPO OBRIGATORIO;

-- password: campo do tipo texto - CAMPO OBRIGATORIO;

-- vocation: campo do tipo texto - CAMPO OBRIGATORIO;

-- level: campo do tipo number - CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "username": "teste",
      "vocation": "beserker",
      "level": 100,
      "password": "123456789"
    }
POST /login -- O método POST em /login é usado para fazer login em uma conta ja existente, quando usado corretamente retorna um token, token esse que é usado para poder acessar outras rotas da api, aceita 2 campos, sendo eles:
 -- username: campo do tipo texto -CAMPO OBRIGATORIO;

 -- password: campo do tipo texto -CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "username": "teste",
      "password": "123456789"
    }
POST /products -- O método POST em /products é usado para fazer criar um novo produto, ele aceita 2 campos sendo eles:
 -- name: campo do tipo texto -CAMPO OBRIGATORIO;

 -- amount: campo do tipo texto -CAMPO OBRIGATORIO;

EXEMPLO:

    {
      "name": "Espada de aço valirian",
      "amount": "100 peças de ouro"
    }

👉 ## O proximo endpoint necessita do token para funcionar, então lembre-se de salvar o token quando fizer login ou criar um usuario, use o token no header da requisição com a chave "Authorization", lembrando que cada token gerado expira em no máximo 5 horas!

POST /orders -- O método POST em /orders é usado para fazer um novo pedido aceita 1 campo, sendo ele:
 -- productsIds: campo do tipo lista -CAMPO OBRIGATORIO, nesse campo você passará os ids dos produtos a qual quer fazer o pedido;

EXEMPLO:

    {
      "productsIds": [1, 2]
    }

About

API foi construída no padrão RESTful usando Node com Express, TypeScript, POO, SOLID, DDD. É um sistema de vendas de itens medievais, utilizei MySQL para a gerenciamento do banco dados.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •