ElissandroMendes / desafio-backend-cm

Desafio Developer Backend - API REST rodando sobre AWS Lambda implementada em NodeJS.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Desafio Backend Developer

Esse projeto é a resposta do desafio técnico para desenvolvedor backend, cuja inteção é construir uma API REST que rode baseada em AWS Lambda functions, as especificações estão descritas no link abaixo:

Especificações do desafio

Arquitetura

A API REST foi estruturada com base nas linguagens e ferramentas resumidas abaixo:

A API está implantada no API Gateway na URL abaixo:

Para implementação dos endpoints da API no API Gateway usamos o SAM Template, que consta nesse repositório.

A API contém os seguinte endpoints/métodos:

  • /categorias:

    • get:
    • post:
  • /categorias/{id}:

    • get:
    • put:
    • delete:
    • patch:
  • /marcas:

    • get:
    • post:
  • /marcas/{id}:

    • get:
    • put:
    • delete:
    • patch:
  • /produtos:

    • get:
    • post:
  • /produtos/{id}:

    • get:
    • put:
    • delete:
    • patch:

Os métodos GET aceitam paginação com base nas seguintes query string (opcionais):

  • offset - Quantidade de registros a avançar da resposta - padrão: 0;
  • limit - Quantidade de registros a devolver - padrão: 100;

Para os recursos Marcas e Categorias o método GET aceita as seguintes querystring: nome;

Para Produtos o método GET aceita as seguintes querystring: marca, categoria, descricao;

O filtro por descrição pode ser parcial, buscando a string passada em qualquer posição da descrição do produto.

Os métodos POST, por permitirem envio de imagens, devem ter como Content-type: multipart/form-data.

Para armazenamento dos recursos: Marca, Categoria e Produto, assim como suas imagens anexadas, optou-se por usar arquivo JSON gravados no S3.

Pré Requisitos para uso do repositório:

Para desenvolver a solução usamos o VSCode. Abaixo seguem algumas orientações e softwares que usamos para o projeto:

  • Ter uma conta na AWS.
    • Por questão de boas práticas não devemos usar nossa conta root;
  • Instalar o AWS CLI:
  • Instalar o AWS SAM CLI:
  • Configurar suas credencias:
$> aws configure

O Docker é útil para invocação local das Lambda functions.

Após a instalação dos pré-requisitos acima, clonar o repositório e dentro da pasta do projeto, executar:

sam build
sam deploy --guided

O primeiro comand irá executar um build da aplicação. O segundo fará o deploy da aplicação para a AWS.

Para esse primeiro deploy é interessante usarmos a opção --guided.

Teremos uma série de perguntas:

  • Stack Name: Nome da stack a criad ano CloudFormation. Deve ser único para sua conta e região, uma sugestão seria o nome do projeto.
  • AWS Region: Região da AWS para onde seu projeto dever ser enviado.
  • Confirm changes before deploy: Se sim, serão exibidas as alterações antes de serem gravadas.
  • Allow SAM CLI IAM role creation: Informa se permite que os papéis necessários sejam automaticamente criado.
  • Save arguments to samconfig.toml: Se sim, suas escolhas serão gravadas em um arquivo de configuração sendo usado nos demais deploy, bastando executar sam deploy.

No repositório temos o arquivo:

  • DesafioBackendCM-app-Prod-swagger-apigateway.yaml Esse arquivo foi gerado a partir do Insomnia e contém requests de exemplo de chamadas à API para todos os endpoints disponibilizados. Para usa-lo basta instalar o Insomnia e realizar a importação. Será criada uma workspace e nela conterá dos os endpoints.

About

Desafio Developer Backend - API REST rodando sobre AWS Lambda implementada em NodeJS.


Languages

Language:JavaScript 100.0%