julianaibiapina / laravelcrud

API com funcionalidade de transações financeiras simplificadas entre usuários e cadastro de endereços, implementa autenticação com JWT e princípios de SOLID bem como Clean Code.
0 stars 0 forks source link
clean-code jwt-authentication laravel php8 solid-principles

Instalação

PHP 8.1.9

Laravel 8

MySql 14.14

  • Instalar as dependências do projeto
```bash
composer install
```

Endpoints Disponíveis

URL base da API

http://localhost/{project_name}/public/api

Auth

[POST] Register

/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"
}

[POST] Login

/auth/login

Body

{
  "email": "usuario@mail.com",
  "password": "123456"
}

Response

{
    "success": true,
    "data": {
        "token": "TOKEN"
    },
    "message": "Token created successfully"
}

[POST] Logout

/auth/logout

Body

{
  "token": "TOKEN"
}

Response

{
    "success": true,
    "data": [],
    "message": "User has been logged out"
}

Transactions

[POST] Store

/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

[POST] Create

/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"
}

[GET] List

/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"
}

[GET] Show

/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"
}

[PUT] Update

/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"
}

[DELETE] Delete

/addresses/{id}

Headers

{
  "Authorization": "Bearer {TOKEN}",
  "Content-Type": "application/json"
}

Body

{
}

Response

{
    "success": true,
    "data": [],
    "message": "Address deleted successfully"
}