API Registro de Contas
Essa API tem o intuito de mostrar meus conhecimentos em desenvolvimento de API's e praticar os conhecimentos que venho adquirindo em meus estudos.
Requisitos
º PHP 7.4* ;
º Composer ;
º Extensões PDO.
A conexão padrão esta para SQLite, mas você pode escolher qualquer conexão no arquivo .env
e configurando de acordo com as informações que é pedido, como a configuração esta como SQLite, quando usar outro dirver é preciso comentar DATABASE_PATH e ir no arquivo config/packages/doctrine.yaml
e comentar path: '%env(resolve:DATABASE_PATH)%'
. para descomentar basta remover #
.
#DATABASE_NAME=
DATABASE_DRIVER=pdo_sqlite
DATABASE_PATH=%kernel.project_dir%/var/data.db
#DATABASE_HOST=
#DATABASE_PASSWORD=
#DATABASE_PORT=
Executar na linha de comando
º composer install //instala todas dependências que o projeto precisa
° php bin/console doctrine:database:create // cria um o banco de dados de acordo com o driver
° php bin/console doctrine:migrations:migrate // executa o SQL para criar as tabelas
° php bin/console doctrine:fixture:load // irá criar o usuário e tipos de conta
º php -S localhost:8080 -t public // esse comando ira subir um servidor local para acessar as rotas
Verbos HTTP's utilizados
- GET
- POST
- PUT
- DELETE
A rotas podem ser encontradas acessando src/Controller/ContaController.php
nesse controle é possível encontrar
todas a rotas que estão sendo chamadas. Assim que acessar o arquivo ContaController.php
, irá ver que o construtor recebe
por injeção de dependência algumas classes e interfaces. Foi criado o arquivo de ResponseJsonFactory
para retorna o uma response um pouco mais detalhada, mas caso queira usar a classe JsonResponse
não tem problema, mas
irá precisar fazer alterações nas responses das outras rotas.
TODAS AS ROTAS PRECISÃO DE AUTENTICAÇÃO PARA SER ACESSADAS. Para fazer a autenticação basta acessar
/login
e informar os seguintes campos no corpo da requisição
{
"username" : "guilherme"
"senha" : "gui123"
}
Assim que enviar a requisição será retornado um token, ele precisa ser enviado em todas as requisições. Para enviar o token, basta enviar ele no cabeçalho da requisição.
Ainda não foi implemetado a rota para criar novos usuários, então será necessário acessar com esse informado acima.
Rotas de acesso
GET
Essa rota ira retornar todas as contas que foram criadas. Assim que acessada ele irá chamar o método index,
nesse metódo é possível ver que a nossa classe ContaController.php
, recebe no construtor outra classe chamada App\Service\ExtratorRequest.php
ela permite fazermos consultas mais específicas. Exemplos de consultas
-
Ordernar
/contas?sort['campo']=ASC | /contas?sort['campo']=DESC | ex.: /contas?sort['id']=ASC
-
Filtrar
/contas?campo=nomeDaConta | ex.: /contas?id=1
-
ItensPorPagina e Páginas
/contas?itens=2&page=1
Por padrão se não for informando a quantidade de itens por pagianas, sera mostrado automaticamente 10 itens por paginas.
| GET | /contas status:200
POST
Essa rota vai ser usada para criar uma nova Conta. Para criar uma nova Conta é necessário enviar os seguintes campos:
{
"nome" : "string",
"valor" : float,
"data" : "date",
"tipo" : 1
}
Para escolher qual tipo de conta basta colocar o id dos tipos de contas
id | Tipos
_____________
1 | Agua
_____________
2 | Luz
_____________
3 | Telefone
_____________
4 | Internet
Para criar uma conta é necessário informar o tipo dela.
| POST | /contas status:201
GET
Essa rota retorna uma conta específica, basta passar o id no parâmetro {id}.
| GET | /conta/{id} status:202
PUT
Essa rota irá atualizar, basta informar o número do id no parâmetro {id} os seguintes campos:
{
"nome" : "string",
"valor" : float,
"data" : "date",
"tipo" : 1
}
Apenas essas informações irão atualizar.
| PUT | /conta/{id}/update status:204
DELETE
Essa rota irá remover uma conta permanentemente, basta informar o número do id no parâmetro {id}.
| DELETE | /conta/{id}/delete status:204
GET
Essa rota retorna os tipos de contas e todas a consta que estão associadas aos grupos.
| GET | /tipo/conta/{grupoId} status:200