A API de Bandeira Tarifária é uma ferramenta importante para quem precisa acompanhar as mudanças nas tarifas de energia elétrica no Brasil. Ela retorna informações sobre as bandeiras tarifárias e valores aplicados a cada mês, permitindo que usuários e empresas possam se programar e fazer ajustes na sua gestão de energia.
Além de ser uma única disponível e aberta, esta API é atualizada regularmente com informações precisas e confiáveis, garantindo que os usuários possam ter sempre acesso às informações mais atualizadas sobre as tarifas de energia. Isso é fundamental para que empresas e consumidores possam se planejar e evitar surpresas desagradáveis na hora de pagar suas contas de energia.
A utilização da API de Bandeira Tarifária é simples e fácil, e ela pode ser integrada com outras ferramentas e sistemas para ampliar sua funcionalidade e ajudar ainda mais na gestão da energia elétrica. Se você precisa acompanhar as mudanças nas tarifas de energia, essa é a ferramenta ideal para você.
Neste post vou mostrar como criar uma simples API Rest com o framework PHP CodeIgniter 4.
Passo 1: Criar o banco de dados
Neste exemplo criarei um banco de dados no MySQL com nome “tutorial”, para criar basta usar este comando:
CREATE DATABASE tutorial;
Também criarei uma tabela Livro neste banco de dados:
USE tutorial;
CREATE TABLE livro (
id INT NOT NULL AUTO_INCREMENT,
descricao VARCHAR(50) NOT NULL,
valor DOUBLE NOT NULL,
autor VARCHAR(20) NOT NULL,
PRIMARY KEY(id)
);
O próximo passo é popular a tabela com alguns livros, é só rodar o código abaixo:
INSERT INTO livro (descricao, valor, autor) VALUES
('1984' , 21.01, 'George Orwell'),
('Admirável Mundo Novo' , 25.40, 'Aldous Huxley'),
('Fahrenheit 451' , 24.51, 'Ray Bradbury');
Passo 2: Baixar e configurar o CodeIgniter 4
Agora basta entrar no site oficial do CodeIgniter 4 (https://codeigniter.com), baixar a última versão (neste momento 4.0.4) e extrair em um diretório.
Depois disto é necessário entrar no diretório do projeto e alterar o nome do arquivo “env” para “.env”, editar este arquivo removendo os comentários das linhas abaixo e inserindo os seguintes parâmetros:
Lembrando que os campos de usuário e senha do banco devem estar corretos conforme configurado no MySQL da máquina.
Passo 3: Criar o Model
A próxima etapa é criar o model conforme a tabela que criei, no diretório app/Models criar um arquivo chamado LivroModel.php e inserir os seguintes códigos:
O próximo passo é gerar o controller, no diretório app/Controllers criar o arquivo Livros.php com o código abaixo:
<?php namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
use CodeIgniter\API\ResponseTrait;
use App\Models\LivroModel;
class Livros extends ResourceController
{
use ResponseTrait;
// lista todos livros
public function index()
{
$model = new LivroModel();
$data = $model->findAll();
return $this->respond($data);
}
// lista um livro
public function show($id = null)
{
$model = new LivroModel();
$data = $model->getWhere(['id' => $id])->getResult();
if($data){
return $this->respond($data);
}
return $this->failNotFound('Nenhum dado encontrado com id '.$id);
}
// adiciona um livro
public function create()
{
$model = new LivroModel();
$data = $this->request->getJSON();
if($model->insert($data)){
$response = [
'status' => 201,
'error' => null,
'messages' => [
'success' => 'Dados salvos'
]
];
return $this->respondCreated($response);
}
return $this->fail($model->errors());
}
// atualiza um livro
public function update($id = null)
{
$model = new LivroModel();
$data = $this->request->getJSON();
if($model->update($id, $data)){
$response = [
'status' => 200,
'error' => null,
'messages' => [
'success' => 'Dados atualizados'
]
];
return $this->respond($response);
};
return $this->fail($model->errors());
}
// deleta um livro
public function delete($id = null)
{
$model = new LivroModel();
$data = $model->find($id);
if($data){
$model->delete($id);
$response = [
'status' => 200,
'error' => null,
'messages' => [
'success' => 'Dados removidos'
]
];
return $this->respondDeleted($response);
}
return $this->failNotFound('Nenhum dado encontrado com id '.$id);
}
}
Abaixo uma breve explicação do funcionamento dos métodos deste controller:
index() – É usado para listar todos os livros. create() – Este método é usado para adicionar um livro. update() – Este é usado para alterar um livro existente. show() – É usado para listar apenas um livro. delete() – Este método é usado para remover um livro.
Passo 5: Configurando a rota para o endpoint
O próximo passo é criar as rotas do endpoint, para isso o CodeIgniter 4 disponibiliza o recurso Resource Routes que cria automagicamente as rotas mais usadas por um CRUD.
Para isso é só alterar a seguinte linha no arquivo Routes.php dentro da pasta app/Config:
$routes->get('/', 'Home::index');
Para esta:
$routes->resource('livros');
O framework cria as rotas com apenas essa linha, se fosse criar manualmente seria assim:
Para iniciar o servidor embutido basta abrir o terminal (ou cmd), navegar até a pasta raiz do projeto e executar o comando:
php spark serve
Por padrão o servidor subirá o projeto no caminho http://localhost:8080.
Passo 6: Testando a API
A ultima etapa é testar a API com algum programa cliente de API, eu utilizarei o Postman que é um dos mais populares.
Para listar o livros basta selecionar o verbo GET e na URL colocar http://localhost:8080/livros/
Após clicar em “Send” será exibido o JSON com todos os livros cadastrados.
Para listar apenas um livro, é preciso editar a URL, especificando o id no final:
Para adicionar um novo livro, basta colocar no verbo POST, apontar a URL novamente para http://localhost:8080/livros/, na aba Body especificar raw e tipo JSON, no corpo especificar os dados descricao, valor e autor conforme a imagem:
Para alterar um livro existente, é necessário colocar o verbo PUT, colocar o id do livro existente no final da URL e no Body colocar os dados em JSON com os campos descricao, valor e autor com os novos dados:
E por fim, para excluir um livro, é só escolher o verbo DELETE e e especificar o id do livro a ser removido no fim da URL:
Conclusão:
Neste tutorial mostrei como criar uma simples API Restfull com o CodeIgniter 4, deixando o desenvolvimento bem rápido.