Passo 1: Criando um Controller com Funções CRUD
Ao invés de criar toda a lógica do zero, nossa API utiliza a classeApiResourceController, que já vem com as funcionalidades de CRUD prontas.
Crie seu arquivo de controller em app/controller/ com a seguinte estrutura:
Configuração Essencial
Sendo uma classe-filha deApiResourceController, no mínimo, você precisa informar ao controller qual modelo de dados e qual banco de dados ele deve usar.
$model: O nome da sua classe de modelo (que estendeTRecord). Nota: No ambiente MadBuilder, essas classes são geradas automaticamente a partir do seu banco de dados e ficam emapp/model/.$database: O nome do arquivo de configuração da conexão (sem a extensão.php) localizado emapp/config/.- As demais configurações são opcionais e serão explicadas mais adiante.
minha_conexao.php poderia ser:
Passo 2: Registrando as Rotas no Router
Com o controller pronto, o passo final é ligar os métodos dele (index, show, etc.) aos endereços HTTP. Volte ao arquivo app/routes/api.php e adicione as rotas para o seu recurso:
Passo 3: Testando as Rotas
Assim como no anteriormente, os testes serão realizados através do Postman API com a variável de ambientePara este exemplo, foi criado um grupo de rotas (como o presente acima) para o endpointbase_urldefinida comohttp://localhost/teste.
/api/pedido-venda.
Abaixo, veja a requisição HTTP POST realizada enviando os valores para um novo registro. O formato recomendado para enviar dados é o JSON:
Observação: este exemplo utiliza uma base de dados com 809 registros. Como, por padrão, aDigamos que, após analisar os dados retornados, tenhamos identificado que houve um erro de digitação no campoApiResourceControllerretorna 15 registros por página, faz-se necessário enviar o parâmetropagepara acessar a 54ª, e última, página — diferentes bases de dados podem requerer configurações diferentes. É possível alterar essa configuração, mas veremos isso mais adiante.
valor_total do novo registro (ID 809). Vamos então corrigir esse erro:
Observação: uma requisição PUT utilizaria o mesmo endpoint (informando o ID do registro que deseja atualizar), com a exceção de que o corpo da requisição deve conter todos os dados do registro, mesmo os que não mudaram. Aliás, da forma que configuramos as rotas, informar o ID numa requisição GET traria o registro correspondente.O cliente cancelou o pedido? Então, vamos deletar o registro que acabamos de criar (ID 809):
meta) obtida via método index é de grande importância, pois nela constam:
total: Quantidade de registros;per_page: Quantidade de registros por página;current_page: Página atual;last_page: Última página;
LIMIT e OFFSET para retornar os registros de uma página específica, entre outros.
Por fim, podemos concluir que as operações CRUD estão funcionando corretamente.