Principais conclusões:
- O CodeIgniter, combinado com a biblioteca codeigniter-restserver, simplifica a criação de APIs RESTful.
- A implementação da autenticação da chave da API é essencial para proteger os pontos de extremidade da API.
- Testar a funcionalidade da API com ferramentas como o Postman é um passo crucial no processo de desenvolvimento.
O Codeigniter é uma estrutura bem conhecida para o desenvolvimento de aplicaçõesPHP. No entanto, nos casos em que a aplicação precisa de comunicar entre plataformas, precisas de uma API RESTful. Em quase todos os casos, a API REST é um componente essencial das aplicações implementadas em qualquer alojamento web PHP.

O que é a API REST
REST significa Representational State Transfer (Transferência de Estado Representacional). Uma API REST é um serviço Web que utiliza métodos HTTP como GET, PUT, POST, DELETE para a manipulação de dados em várias plataformas.
Neste tutorial, vou demonstrar como podes criar uma API REST no Codeigniter. Para criar a API, usarei codeigniter-restserver, escrito por Phil Sturgeon e atualmente suportado por Chris Kacerguis. Também usarei a biblioteca codeigniter-restclient.
O processo de criação da API REST no Codeigniter abrange as seguintes etapas:
- Instalação da estrutura Codeigniter na Cloudways
- Criação de base de dados e tabela(s)
- Configura as bibliotecas e as permissões
- Configura a autenticação e a(s) chave(s) da API
- Configura chamadas HTTP (GET, PUT, POST, DELETE)
- Testa as chamadas HTTP.
Instalação do Codeigniter na Cloudways
Primeiro, inscreve-te na Cloudways para obteres uma conta gratuita. Quando a conta estiver pronta, faz login na tua conta e cria um novo servidor. Preenche o servidor e os detalhes da aplicação e seleciona PHP Stack como a tua aplicação. Em seguida, insere o nome da aplicação, do servidor e do projeto.
Nota: Podes alojar um número ilimitado de aplicações num único servidor.
CodeIgniter Hosting em Servidores Cloud Geridos
A Cloudways trata da gestão de servidores por ti, para que te possas concentrar na criação de excelentes aplicações e em manter os teus clientes satisfeitos.
Escolhe o teu fornecedor (Google, Amazon, Vultr, DigitalOcean), seleciona o tamanho do servidor de acordo com as tuas necessidades e clica no botão Launch.
Agora que o teu servidor e a tua aplicação estão prontos, abre o teu servidor clicando no nome do servidor.

Inicia sessão com o nome de utilizador e a palavra-passe fornecidos na área Credenciais principais.

Agora que estás ligado ao teu servidor, vai ao terminal SSH e escreve os seguintes comandos para instalar o Codeigniter.
aplicações cd cd nome_da_aplicação/public_html wget https://github.com/bcit-ci/CodeIgniter/archive/develop.zip

Quando a transferência do ficheiro zip terminar, descompacta o ficheiro utilizando os seguintes comandos.
descompacta o arquivo develop.zip Mv CodeIgniter-develop codeigniter rm index.php rm desenvolve.zip
Neste ponto, a instalação está concluída.
Hospedagem PHP: Melhor alojamento Web PHP 7 & PHP 5.6
Vai para o separador Aplicação no painel Cloudways e seleciona a tua aplicação. Clica no botão destacado (veja a imagem a seguir) para acessar o aplicativo. Lembra-te de adicionar /codeigniter ao URL e carrega na tecla Enter.


Criar base de dados e tabela(s)
Vou agora criar uma base de dados simples com uma tabela chamada Utilizador. Para criar a base de dados, vai ao separador Gestão de aplicações e abre o gestor de bases de dados.

Escreve o seguinte comando no campo de comando SQL:
CREATE TABLE `tbl_user` ( `user_id` int(11) NOT NULL, `nome_do_utilizador` varchar(40) NOT NULL, `palavra-passe_do_utilizador` varchar(40) NOT NULL, `user_type` varchar(15) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Configurar bibliotecas e permissões
Antes de mais, descarrega as bibliotecas codeigniter-restserver e codeigniter-restclient. Extrai o conteúdo e, em seguida, arrasta e solta os arquivos application/libraries/Format.php e application/libraries/REST_Controller.php nos diretórios da aplicação. Lembre-se de adicionar require_once no topo dos controladores para carregá-los no escopo. Além disso, copia o arquivo rest.php de application/config no diretório de configuração da aplicação.
Podes estar interessado em: Como passar dados do controlador para a vista no CodeIgniter
Agora cria um ficheiro na pasta de raiz da aplicação e dá-lhe o nome .htaccess. Cola o seguinte código nele.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Configurar a autenticação e a chave da API
Para configurar a autenticação, começa por criar as seguintes tabelas na base de dados:
CREATE TABLE `keys` ( `id` int(11) NOT NULL, `chave` varchar(40) NOT NULL, `level` int(2) NOT NULL, `ignore_limits` tinyint(1) NOT NULL DEFAULT '0', `is_private_key` tinyint(1) NOT NULL DEFAULT '0', `ip_addresses` text, `data_criada` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `logs` ( `id` int(11) NOT NULL, `uri` varchar(255) NOT NULL, `method` varchar(6) NOT NULL, `params` texto, `api_key` varchar(40) NOT NULL, `ip_address` varchar(45) NOT NULL, `time` int(11) NOT NULL, `rtime` float DEFAULT NULL, `authorized` varchar(1) NOT NULL, `response_code` smallint(3) DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
A tabela Keys será utilizada para guardar a chave da API e a tabela Logs guardará os registos dos pedidos recebidos pelo servidor.
Agora abre application / database.php e escreve o teu nome de anfitrião, nome da base de dados e palavra-passe (disponíveis nos detalhes de acesso à aplicação).


O próximo passo é a configuração da autenticação. Para isso, abre application / autoload.php e altera esta linha de código
$autoload['libraries'] = array( );
Para isso
$autoload['libraries'] = array('database');
Agora vai para application / rest.php e define as seguintes entidades como mostrado
$config['rest_enable_keys'] = TRUE; $config['rest_logs_table'] = 'logs'; $config['rest_auth'] = 'basic'; $config['auth_source'] = '';
A autenticação está agora pronta. Segue-se a criação do modelo e das chamadas HTTP.
Configurar chamadas HTTP
Agora vou criar dois ficheiros.
Vai a application/controllers e cria um novo ficheiro com o nome de api.php. Cola o seguinte código nele.
<?php
defined('BASEPATH') OR exit('Não é permitido o acesso direto ao script');
require(APPPATH.'/libraries/REST_Controller.php');
class Api extends REST_Controller
{
função pública __construct() {
parent::__construct();
$este->carrega->model('user_model');
}
função pública user_get(){
$r = $this->modelo_de_utilizador->lê();
$este->resposta($r);
}
função pública user_put(){
$id = $this->uri->segmento(3);
$data = array('name' => $este->entrada->obtém('nome'),
"passa" => $este->entrada->obtém('pass'),
'tipo' => $este->introduzido->obtém('tipo')
);
$r = $this->modelo_de_utilizador->actualiza($id,$data);
$este->resposta($r);
}
função pública user_post(){
$data = array('name' => $este->entrada->publica('nome'),
"passa" => $este->entrada->publica('pass'),
'tipo' => $este->entrada->publica('tipo')
);
$r = $this->modelo_de_utilizador->insere($data);
$este->resposta($r);
}
função pública user_delete(){
$id = $this->uri->segmento(3);
$r = $this->modelo_de_utilizador->apaga($id);
$este->resposta($r);
}
}
Em seguida, vai a application/models e cola o seguinte código.
<?php
defined('BASEPATH') OR exit('Não é permitido o acesso direto ao script');
/**
*
*/
class User_model extends CI_Model
{
public function read(){
$query = $this->db->consulta("select * from `tbl_user`");
retorna $query->result_array();
}
função pública insert($data){
$este->user_name = $data['name']; // lê a nota abaixo
$este->palavra-passe_do_utilizador = $data['pass'];
$este->tipo_de_utilizador = $data['tipo'];
se($this->db->insere('tbl_user',$this))
{
devolve 'Os dados foram inseridos com sucesso';
}
mais
{
devolve "Ocorreu um erro";
}
}
função pública update($id,$data){
$este->user_name = $data['name']; // lê a nota abaixo
$este->palavra-passe_do_utilizador = $data['pass'];
$este->tipo_de_utilizador = $data['tipo'];
$resultado = $este->db->update('tbl_user',$this,array('user_id' => $id));
se($resultado)
{
devolve "Os dados foram actualizados com êxito";
}
mais
{
devolve "Ocorreu um erro";
}
}
função pública delete($id){
$resultado = $este->db->consulta("delete from `tbl_user` where user_id = $id");
se($resultado)
{
devolve "Os dados foram eliminados com êxito";
}
mais
{
devolve "Ocorreu um erro";
}
}
}
Testar as chamadas HTTP
Para testar as chamadas HTTP da API, vou utilizar o Postman. Vai ao Postman, define o método como GET e, em seguida, define a autenticação e a chave da API, como se mostra abaixo:


Agora, para testar o pedido POST , define o pedido como POST e adiciona a autenticação e a chave da API. Preenche as variáveis conforme mostrado abaixo:

A seguir, vou testar o pedido PUT . Passa o id no 3º segmento do URL, define o pedido como PUT, define a autenticação e a chave da API e preenche os parâmetros como se mostra abaixo:

Para testar o pedido DELETE , passa o id no 3º segmento do URL, define o pedido como DELETE, define a autenticação e a chave da API e preenche os parâmetros como se mostra abaixo:

Resumindo
Neste tutorial, descrevi como configurar a autenticação para uma API REST no CodeIgniter, incluindo a criação de quatro chamadas de API para manipulação de dados. A beleza do CodeIgniter está em sua abordagem simplificada para criar APIs. Para os programadores que procuram um ambiente de alojamento optimizado para aplicações CodeIgniter, as soluções de alojamento CodeIgniter podem proporcionar ganhos de eficiência adicionais. Estes fornecedores podem oferecer definições pré-configuradas ou processos de implementação simplificados especificamente para o CodeIgniter, permitindo que te concentres na criação da tua API.
Shahzeb Ahmed
Um criativo de dia (com uma chávena de chá) e um criativo de noite. Ahmad Kamran é um escritor de conteúdos sazonais e Executivo de Marketing Sénior na Cloudways. Podes encontrá-lo na sua secretária a escrever, a criar estratégias ou a jogar jogos. E, caso não o encontres aqui, ele estará nas montanhas ou à beira do rio.