Para criar uma API em PHP que permita realizar operações de INSERT, UPDATE, DELETE e SELECT em um banco de dados, podemos usar uma combinação de PHP, PDO (PHP Data Objects) e JSON para comunicação com o cliente. Vou te mostrar um exemplo simples de como fazer isso.
Estrutura do Projeto
: Arquivo de configuração para conexão com o banco de dados.
: Arquivo que lida com as requisições da API.
.htaccess: (Opcional) Para redirecionar todas as requisições para
api.php
.
1. Arquivo de Configuração (config.php)
<?php
$host = 'localhost';
$db = 'nome_do_banco';
$user = 'usuario';
$pass = 'senha';
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Erro na conexão: " . $e->getMessage());
}
?>
2. Arquivo da API (api.php)
<?php
header('Content-Type: application/json');
require 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
handleGet($pdo);
break;
case 'POST':
handlePost($pdo);
break;
case 'PUT':
handlePut($pdo);
break;
case 'DELETE':
handleDelete($pdo);
break;
default:
echo json_encode(['message' => 'Método não suportado']);
break;
}
function handleGet($pdo) {
$stmt = $pdo->prepare("SELECT * FROM tabela");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result);
}
function handlePost($pdo) {
$data = json_decode(file_get_contents('php://input'), true);
$stmt = $pdo->prepare("INSERT INTO tabela (coluna1, coluna2) VALUES (:valor1, :valor2)");
$stmt->execute(['valor1' => $data['valor1'], 'valor2' => $data['valor2']]);
echo json_encode(['message' => 'Registro inserido com sucesso']);
}
function handlePut($pdo) {
$data = json_decode(file_get_contents('php://input'), true);
$stmt = $pdo->prepare("UPDATE tabela SET coluna1 = :valor1 WHERE coluna2 = :valor2");
$stmt->execute(['valor1' => $data['valor1'], 'valor2' => $data['valor2']]);
echo json_encode(['message' => 'Registro atualizado com sucesso']);
}
function handleDelete($pdo) {
$data = json_decode(file_get_contents('php://input'), true);
$stmt = $pdo->prepare("DELETE FROM tabela WHERE coluna1 = :valor1");
$stmt->execute(['valor1' => $data['valor1']]);
echo json_encode(['message' => 'Registro deletado com sucesso']);
}
?>
3. (Opcional) Arquivo .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.php [QSA,L]
Como Testar a API
Você pode usar ferramentas como Postman ou cURL para testar as requisições à API.
Exemplo de Requisição GET
curl -X GET http://localhost/api.php
Exemplo de Requisição POST
curl -X POST http://localhost/api.php -d '{"valor1": "exemplo1", "valor2": "exemplo2"}'
Exemplo de Requisição PUT
curl -X PUT http://localhost/api.php -d '{"valor1": "novo_valor", "valor2": "exemplo2"}'
Exemplo de Requisição DELETE
curl -X DELETE http://localhost/api.php -d '{"valor1": "exemplo1"}'
Segurança e Boas Práticas
Validação e Sanitização: Certifique-se de validar e sanitizar todas as entradas do usuário.
Autenticação e Autorização: Implemente autenticação (como tokens JWT) para garantir que apenas usuários autorizados possam acessar e manipular os dados.
Erro e Exceção: Trate erros e exceções adequadamente para evitar a exposição de informações sensíveis.
Esse é um exemplo básico para te ajudar a começar. Dependendo das necessidades específicas do seu projeto, você pode expandir e aprimorar a API com funcionalidades adicionais e medidas de segurança.
OBSERVAÇÕES IMPORTANTES:
Vale lembrar que os exemplos citados acima, são utilizadas apenas para uso didático. Cada desenvolvedor deve ser responsável em aplicar medidas de segurança para evitar ataques de injeção de SQL ou de outro tipo em seu sistema. Também em implementar autenticação JWT ou outros recursos.
Nenhum comentário:
Postar um comentário