Para esse teste, os requisitos obrigatórios são:
- PHP 7.1
- Composer na versão 1.10
- Base de dados em MySQL 8
- Uso de JSON para o corpo na API
Os requisitos desejáveis incluem:
- Uso de Docker como base para execução, fornecendo o Dockerfile com todas as dependências para validação e teste posterior
- Estruturação da base com boas práticas
- Uso de conceitos atuais de desenvolvimento (ao critério do desenvolvedor)
- Submissão em um repositório git (por exemplo, GitHub) para compartilhamento
- Montagem da base por migrations do Yii2
- Autenticação por credencial (usuário/senha) e retorno de token (Bearer sugerido)
- Para criar um usuário, deve-se fazer um comando de terminal que recebe o login, senha e nome desejados.
- Todas as APIs (exceto a de autenticação) devem validar o token fornecido ao efetuar a autenticação, preferencialmente passando pelo Header (Authorization)
- Desenvolvimento de APIs para:
- Autenticação
- Cadastro de cliente básico, incluindo:
- Nome
- CPF (com validação)
- Dados de endereço (CEP, Logradouro, Número, Cidade, Estado, Complemento)
- Foto
- Sexo
- Lista dos clientes (com paginação para o retorno)
- Cadastro de produto, incluindo:
- Nome
- Preço
- Cliente (detentor do produto)
- Foto
- Lista dos produtos (com retorno paginado e possibilidade de filtrar pelo cliente)
git clone [email protected]:mperuch/coalize.git
cd <coalize>
cp .env.example .env
Iniciar container
docker-compose up -d
Neste ponto, a API está rodando em http://127.0.0.1
. São disponibilizados os seguintes endpoints:
docker exec -it coalize_app php yii populate-user-table --name="Nome" --username=usuario --password=senha
GET /health-check
: verificação de saúde da aplicaçãoPOST /v1/signup
: novo usuárioPOST /v1/signin
: autenticação e geração do JWTPOST /v1/refresh-token
: recriação do JWT
GET /v1/customer
: listagem de clientesPOST /v1/customer/create
: novo clientePUT /v1/customer/update
: edição de clientePOST /v1/customer/[customerId]/upload-picture
: upload da fotoDELETE /v1/customer/delete
: exclusão de cliente
GET /v1/product
: listagem de produtosGET /v1/product/?customer_id=[customerId]
: listagem de produtos do clientePOST /v1/product/create
: novo produtoPUT /v1/product/update
: edição de produtoPOST /v1/product/[productId]/upload-picture
: upload da fotoDELETE /v1/product/delete
: exclusão de produto
- Após autenticação, o token é enviado no cabeçalho (Authorization: Bearer token)
- As imagens são enviadas para o diretório web/uploads/[customers|products]
- A paginação está configurada para 4 registros por página
- Aqui está o arquivo contendo os requests (gerado no Insomnia, mas pode ser importado no Postman, se necessário).