Olá,
Queremos te conhecer melhor e para isso te convidamos a realizar o seguinte teste técnico:
Você acabou de começar um novo desafio como Desenvolvedor PHP na empresa Contact List LTDA. E a sua primeira tarefa será desenvolver uma API para gerenciar uma Lista de Contatos.
Os requisitos para a construção desta API são:
-
Usar o paradigma REST (Representational State Transfer)
-
A stack que esta API terá que ser desenvolvida é:
Linguagem: PHP
Framework: Laravel
- As seguintes rotas deverão ser criadas:
/contato (GET) -> Retorna todos os contatos da lista de contatos
/contato/{id} (GET) -> Retorna um único contato
/contato/{id} (POST) -> Cria um novo contato
/contato/{ID} (DELETE) -> Apaga um contato
Exemplos:
http://URL:PORT/contato (GET) deve retornar:
[
{
"id": "1",
"firstname": "João",
"lastname": "Silva",
"address": {
"city": "São Paulo",
"state": "SP"
}
},
{
"id": "2",
"firstname": "Maria",
"lastname": "Pereira",
"address": {
"city": "Belo Horizonte",
"state": "MG"
}
}
]
http://URL:PORT/contato/1 (GET) deve retornar:
[
{
"id": "1",
"firstname": "João",
"lastname": "Silva",
"address": {
"city": "São Paulo",
"state": "SP"
}
}
]
Bem fácil né? Mas existe um outro cenário...já se passaram alguns anos depois que você criou a API acima. Os tempos mudaram e há a necessidade de construção de uma nova versão desta API.
A versão "v2" desta nova API deverá ser feita utilizando GraphQL(https://graphql.org/). Nunca ouviu falar? Aqui tem um tutorial legal: https://graphql.org/learn/
Seu trabalho agora é construir a MESMA API que você construiu anteriormente com REST, porém agora utilizando o paradigma GraphQL.
Só para não deixar dúvidas, os entregáveis do teste técnico serão:
- versão "v1" da API utilizando REST
- versão "v2" da API utilizando GraphQL
Crie um repositório DE PREFERÊNCIA privado no GitHub ou GitLab e nos de acesso a ele para que possamos ver o seu código.
Bônus points:
- Testes unitários
- Dockerizar a aplicação
- Fazer o deploy da aplicação em containers Docker utilizando algum IaaS ou PaaS de sua escolha (Amazon AWS, Google Cloud, Digital Ocean, etc)