PHP 8.1.9
Laravel 8
MySql 14.14
- Instalar as dependências do projeto
```bash
composer install
```
Criar o arquivo .env
cp .env.example .env
Preencher as variáveis de ambiente do banco de dados
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Criar a variável de ambiente com a URL do serviço de busca de CEP
CEP_SERVICE_URL=https://viacep.com.br/ws/CEP/json/
Gerar a key para o JWT
php artisan jwt:secret
Criar a variável de ambiente JWT_SECRET e atribuir a key gerada no passo anterior
JWT_SECRET={JWT_KEY}
Criar o banco de dados por meio das migrations
php artisan migrate
Inserir os dados iniciais com os seeders
php artisan db:seed
Dados de valores monetários sao persistidos e tratados como inteiro. Esta representação com inteiros foi escolhida devido às limitações do range de valores de tipos decimais, o tipo inteiro suporta um range de valores bem maior. Tais dados devem ser tratados no front-end a fim de que sejam adicionadas duas casas decimais.
URL base da API
http://localhost/{project_name}/public/api
/auth/register
Body
{
"name": "Usuario Exemplo",
"identifier": "73277003078",
"email": "exemplo@email.com",
"password": "123456",
"type_id" : 1
}
Response
{
"success": true,
"data": {
"user": {
"name": "Usuário Exemplo",
"email": "exemplo@email.com",
"identifier": "73277003078",
"type_id": 1,
"updated_at": "2022-09-06T01:12:22.000000Z",
"created_at": "2022-09-06T01:12:22.000000Z",
"id": 9
}
},
"message": "User created successfully"
}
/auth/login
Body
{
"email": "usuario@mail.com",
"password": "123456"
}
Response
{
"success": true,
"data": {
"token": "TOKEN"
},
"message": "Token created successfully"
}
/auth/logout
Body
{
"token": "TOKEN"
}
Response
{
"success": true,
"data": [],
"message": "User has been logged out"
}
/transaction
Headers
{
"Authorization": "Bearer {TOKEN}",
"Content-Type": "application/json"
}
Body
{
"value": 1000,
"payer_id": 6,
"payee_id": 8
}
Response
{
"success": true,
"data": [],
"message": "Transaction performed successfully."
}
/addresses
Headers
{
"Authorization": "Bearer {TOKEN}",
"Content-Type": "application/json"
}
Body
{
"cep": "62320069",
"numero": "1247",
"ponto_referencia": "Avenida principal da cidade"
}
Response
{
"success": true,
"data": {
"endereco": {
"cep_id": 1,
"numero": "1247",
"ponto_referencia": "Avenida principal da cidade",
"user_id": 13,
"updated_at": "2022-08-02T00:08:13.000000Z",
"created_at": "2022-08-02T00:08:13.000000Z",
"id": 12,
"cep": {
"id": 1,
"cep": "62320069",
"rua": "Avenida Prefeito Jacques Nunes",
"bairro": "Centro",
"cidade": "Tiangua",
"uf": "CE",
"created_at": "2022-07-27T18:42:48.000000Z",
"updated_at": "2022-07-27T18:42:48.000000Z"
}
}
},
"message": "Address created successfully"
}
/addresses
Headers
{
"Authorization": "Bearer {TOKEN}",
"Content-Type": "application/json"
}
Body
{
}
Response
{
"success": true,
"data": {
"addresses": [
{
"id": 1,
"user_id": 13,
"numero": "1247",
"ponto_referencia": "Avenida principal da cidade",
"created_at": "2022-08-01T01:57:26.000000Z",
"updated_at": "2022-08-01T01:58:22.000000Z",
"cep_id": 4,
"cep": {
"id": 1,
"cep": "62320069",
"rua": "Avenida Prefeito Jacques Nunes",
"bairro": "Centro",
"cidade": "Tiangua",
"uf": "CE",
"created_at": "2022-07-27T18:42:48.000000Z",
"updated_at": "2022-07-27T18:42:48.000000Z"
}
},
]
},
"message": "OK"
}
/addresses/{id}
Headers
{
"Authorization": "Bearer {TOKEN}",
"Content-Type": "application/json"
}
Body
{
}
Response
{
"success": true,
"data": {
"address": {
"id": 11,
"user_id": 13,
"numero": "1247",
"ponto_referencia": "Avenida principal da cidade",
"created_at": "2022-08-02T00:06:46.000000Z",
"updated_at": "2022-08-02T00:06:46.000000Z",
"cep_id": 1,
"cep": {
"id": 1,
"cep": "62320069",
"rua": "Avenida Prefeito Jacques Nunes",
"bairro": "Centro",
"cidade": "Tiangua",
"uf": "CE",
"created_at": "2022-07-27T18:42:48.000000Z",
"updated_at": "2022-07-27T18:42:48.000000Z"
}
}
},
"message": "OK"
}
/addresses/{id}
Headers
{
"Authorization": "Bearer {TOKEN}",
"Content-Type": "application/json"
}
Body
{
"cep": "62320021",
"numero": "1010",
"ponto_referencia": "Proximo a Igreja"
}
Response
{
"success": true,
"data": [],
"message": "Address updated successfully"
}
/addresses/{id}
Headers
{
"Authorization": "Bearer {TOKEN}",
"Content-Type": "application/json"
}
Body
{
}
Response
{
"success": true,
"data": [],
"message": "Address deleted successfully"
}