Criar aplicação que exponha uma API RESTful de criação de usuários com login.
A aplicação deve aceitar e responder apenas em JSON.
Nós esperamos que as mensagens de erro tenham o seguinte formato:
{"message": "Error message", "errorCode": 123}
- Essa rota espera um usuário com os campos abaixo:
- firstName [String]
- lastName [String]
- email [String]
- password [String]
- phones [List]
- number [Number]
- area_code [Number]
- country_code [String]
- Segue abaixo um exemplo do formato:
{
"firstName": "Hello",
"lastName": "World",
"email": "hello@world.com"
"password": "hunter2",
"phones": [
{
"number": 988887888,
"area_code": 81,
"country_code": "+55"
}
]
}
Obs: O id do usuário pode ser um sequencial gerado pelo banco ou um id único.
-
Responder o código de status HTTP apropriado
-
Em caso de sucesso você deve retornar uma mensagem de sucesso;
-
Em caso de erro:
- E-mail existente [retornar um erro com a mensagem "E-mail already exists"];
- Campos inválidos [retornar um erro com a mensagem "Invalid fields"];
- Campos não preenchidos [retornar um erro com a mensagem "Missing fields"];
-
Essa rota espera um objeto com os campos abaixo:
- email [String]
- password [String]
-
Em caso de sucesso você deve retornar uma mensagem de sucesso com informaçÕes do usuário logado;
-
Em caso de erro:
- E-mail inexistente ou senha errada [retornar um erro com a mensagem "Invalid e-mail or password"];
- Campos não preenchidos [retornar um erro com a mensagem "Missing fields"];
-
Essa rota espera o login do usuário (via header):
- Authorization [string]
-
Em caso de sucesso você deve retornar:
firstName
: Nome do usuário;lastName
: Sobrenome do usuário;email
: E-mail do usuário;phones
: Lista de telefones do usuário;created_at
: Data da criação do usuário;last_login
: Data da última vez que o usuário realizou login;
-
Em caso de erro:
- Token não enviado [retornar um erro com a mensagem "Unauthorized"];
- Token expirado [retornar um erro com a mensagem "Unauthorized - invalid session"];
- Banco de dados em memória.
- Persistência com Entity Framework ou NHibernate.
- Framework IOC de sua escolha.
- Utilizar .Net framework ou .Net Core.
- Testes unitários