Neste tutorial, voc\u00ea aprender\u00e1 como criar uma REST API em PHP do zero, sem usar depend\u00eancias externas. Aprenda a estruturar, configurar e testar sua pr\u00f3pria API e d\u00ea vida \u00e0s suas aplica\u00e7\u00f5es web.<\/p>\n
Quer saber mais sobre APIs REST? Visite nosso post em\u00a0REST API: O que \u00e9 e como funciona?<\/strong><\/p>\n Antes de come\u00e7armos a criar nossa REST API em PHP sem usar depend\u00eancias, certifique-se de que voc\u00ea tenha os seguintes requisitos instalados e configurados em seu ambiente de desenvolvimento:<\/p>\n Uma vez que todos os requisitos estejam instalados e configurados corretamente, voc\u00ea pode prosseguir com a cria\u00e7\u00e3o da REST API em PHP.<\/p>\n Organizar a estrutura de diret\u00f3rios \u00e9 fundamental para manter seu projeto limpo e f\u00e1cil de entender. Vamos criar a estrutura de diret\u00f3rios para nossa REST API em PHP. No diret\u00f3rio raiz do seu projeto, crie os seguintes diret\u00f3rios e arquivos:<\/p>\n <\/code><\/pre>\n\t\t\t<\/div>\n <\/div>\n Explica\u00e7\u00e3o da estrutura:<\/strong><\/p>\n Agora que criamos a estrutura de diret\u00f3rios, podemos seguir para a configura\u00e7\u00e3o do arquivo .htaccess e a implementa\u00e7\u00e3o dos arquivos de configura\u00e7\u00e3o, conex\u00e3o com o banco de dados, rotas, modelos e controladores.<\/p>\n O arquivo <\/code><\/pre>\n\t\t\t<\/div>\n <\/div>\n Explica\u00e7\u00e3o das regras:<\/strong><\/p>\n Certifique-se de que o m\u00f3dulo Com o arquivo O arquivo de configura\u00e7\u00e3o <\/code><\/pre>\n\t\t\t<\/div>\n <\/div>\n Substitua Agora que voc\u00ea criou o arquivo de configura\u00e7\u00e3o, as informa\u00e7\u00f5es do banco de dados e outras configura\u00e7\u00f5es globais est\u00e3o dispon\u00edveis em todo o projeto atrav\u00e9s das constantes definidas.<\/p>\n O arquivo <\/code><\/pre>\n\t\t\t<\/div>\n <\/div>\n Neste arquivo, criamos uma classe chamada Agora, a conex\u00e3o com o banco de dados est\u00e1 pronta para ser usada nos modelos do projeto.<\/p>\n O arquivo 1 – Requisitos<\/h1>\n
\n
2 – Criando a estrutura de diret\u00f3rios<\/h1>\n
<\/p>\n
rest-api-php\/\n\u2502\n\u251c\u2500\u2500 .htaccess\n\u251c\u2500\u2500 config\/\n\u2502 \u2514\u2500\u2500 config.php\n\u2502\n\u251c\u2500\u2500 controllers\/\n\u2502\n\u251c\u2500\u2500 models\/\n\u2502\n\u251c\u2500\u2500 routes\/\n\u2502 \u2514\u2500\u2500 routes.php\n\u2502\n\u2514\u2500\u2500 utils\/\n \u2514\u2500\u2500 database.php\n<\/pre>\n
\n
.htaccess<\/code>: Arquivo de configura\u00e7\u00e3o do Apache para reescrever URLs e outras configura\u00e7\u00f5es espec\u00edficas do servidor.<\/li>\n
config\/<\/code>: Diret\u00f3rio que armazena o arquivo de configura\u00e7\u00e3o do projeto.\n
\n
config.php<\/code>: Arquivo de configura\u00e7\u00e3o com par\u00e2metros, como informa\u00e7\u00f5es do banco de dados e outras configura\u00e7\u00f5es globais.<\/li>\n<\/ul>\n<\/li>\n
controllers\/<\/code>: Diret\u00f3rio que armazena os controladores respons\u00e1veis por manipular as requisi\u00e7\u00f5es e respostas da API.<\/li>\n
models\/<\/code>: Diret\u00f3rio que armazena os modelos respons\u00e1veis pela l\u00f3gica de neg\u00f3cios e intera\u00e7\u00e3o com o banco de dados.<\/li>\n
routes\/<\/code>: Diret\u00f3rio que armazena o arquivo de rotas.\n
\n
routes.php<\/code>: Arquivo respons\u00e1vel por mapear as rotas da API para os controladores correspondentes.<\/li>\n<\/ul>\n<\/li>\n
utils\/<\/code>: Diret\u00f3rio que armazena arquivos utilit\u00e1rios e de servi\u00e7os, como a conex\u00e3o com o banco de dados.\n
\n
database.php<\/code>: Arquivo respons\u00e1vel pela conex\u00e3o com o banco de dados.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n
3 – Configurando o arquivo .htaccess<\/h1>\n
.htaccess<\/code> \u00e9 usado para configurar o servidor Apache e permitir a reescrita de URLs, o que \u00e9 importante para criar uma API RESTful. Abra o arquivo
.htaccess<\/code> na raiz do projeto e adicione o seguinte conte\u00fado:<\/p>\n
<\/p>\n
RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteRule ^(.+)$ routes\/routes.php [QSA,L]<\/pre>\n
\n
RewriteEngine On<\/code>: Habilita o mecanismo de reescrita do Apache.<\/li>\n
RewriteCond %{REQUEST_FILENAME} !-d<\/code>: Verifica se a solicita\u00e7\u00e3o n\u00e3o corresponde a um diret\u00f3rio existente.<\/li>\n
RewriteCond %{REQUEST_FILENAME} !-f<\/code>: Verifica se a solicita\u00e7\u00e3o n\u00e3o corresponde a um arquivo existente.<\/li>\n
RewriteRule ^(.+)$ routes\/routes.php [QSA,L]<\/code>: Redireciona todas as solicita\u00e7\u00f5es que n\u00e3o correspondem a arquivos ou diret\u00f3rios existentes para o arquivo
routes\/routes.php<\/code>. A flag
[QSA]<\/code> (Query String Append) preserva a string de consulta, enquanto a flag
[L]<\/code> (Last) indica que esta \u00e9 a \u00faltima regra de reescrita a ser aplicada.<\/li>\n<\/ul>\n
mod_rewrite<\/code> do Apache esteja habilitado em seu servidor. Se voc\u00ea estiver usando o Nginx ou outro servidor web, consulte a documenta\u00e7\u00e3o correspondente para configurar a reescrita de URLs.<\/p>\n
.htaccess<\/code> configurado, o servidor web redirecionar\u00e1 todas as solicita\u00e7\u00f5es para o arquivo
routes\/routes.php<\/code>, permitindo que voc\u00ea gerencie as rotas da API de maneira centralizada.<\/p>\n
4 – Criando o arquivo de configura\u00e7\u00e3o<\/h1>\n
config.php<\/code> armazenar\u00e1 as informa\u00e7\u00f5es de configura\u00e7\u00e3o do projeto, como os detalhes do banco de dados e outras configura\u00e7\u00f5es globais. Abra o arquivo
config\/config.php<\/code> e adicione o seguinte conte\u00fado:<\/p>\n
<\/p>\n
<?php\n\ndefine('DB_HOST', 'localhost');\ndefine('DB_NAME', 'your_database_name');\ndefine('DB_USER', 'your_database_user');\ndefine('DB_PASSWORD', 'your_database_password');\n\ndefine('DEBUG', true); \/\/ Altere para 'false' no ambiente de produ\u00e7\u00e3o\n<\/pre>\n
'your_database_name'<\/code>,
'your_database_user'<\/code> e
'your_database_password'<\/code> pelos detalhes do seu banco de dados.<\/p>\n
\n
DB_HOST<\/code>: O endere\u00e7o do servidor de banco de dados.<\/li>\n
DB_NAME<\/code>: O nome do banco de dados.<\/li>\n
DB_USER<\/code>: O nome de usu\u00e1rio do banco de dados.<\/li>\n
DB_PASSWORD<\/code>: A senha do usu\u00e1rio do banco de dados.<\/li>\n
DEBUG<\/code>: Um sinalizador para controlar o modo de depura\u00e7\u00e3o do projeto. Defina como
true<\/code> no ambiente de desenvolvimento e
false<\/code> no ambiente de produ\u00e7\u00e3o.<\/li>\n<\/ul>\n
5 – Criando o arquivo de conex\u00e3o com o banco de dados<\/h1>\n
database.php<\/code> gerenciar\u00e1 a conex\u00e3o com o banco de dados. Abra o arquivo
utils\/database.php<\/code> e adicione o seguinte conte\u00fado:<\/p>\n
<\/p>\n
<?php\n\nrequire_once '..\/config\/config.php';\n\nclass Database {\n private $connection;\n\n public function __construct() {\n $this->connect();\n }\n\n private function connect() {\n $this->connection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);\n\n if ($this->connection->connect_error) {\n die(\"Connection failed: \" . $this->connection->connect_error);\n }\n }\n\n public function getConnection() {\n return $this->connection;\n }\n}\n<\/pre>\n
Database<\/code> para gerenciar a conex\u00e3o com o banco de dados. A classe cont\u00e9m os seguintes m\u00e9todos:<\/p>\n
\n
__construct()<\/code>: Construtor da classe que chama o m\u00e9todo
connect()<\/code> para estabelecer a conex\u00e3o com o banco de dados.<\/li>\n
connect()<\/code>: M\u00e9todo privado que cria uma nova conex\u00e3o com o banco de dados usando a extens\u00e3o
mysqli<\/code>. Se houver um erro de conex\u00e3o, o script ser\u00e1 encerrado e a mensagem de erro ser\u00e1 exibida.<\/li>\n
getConnection()<\/code>: M\u00e9todo p\u00fablico que retorna a conex\u00e3o estabelecida com o banco de dados.<\/li>\n<\/ul>\n
6 – Criando o arquivo de rotas<\/h1>\n
routes.php<\/code> gerencia todas as rotas da API e direciona as solicita\u00e7\u00f5es para os controladores apropriados. Abra o arquivo
routes\/routes.php<\/code> e adicione o seguinte conte\u00fado:<\/p>\n