Introdução
As APIs REST são a base para integração entre sistemas modernos, permitindo que diferentes aplicações troquem informações de forma simples e eficiente. Neste post, vamos criar uma API REST em PHP que lista arquivos e diretórios em um servidor Linux. Esse é um recurso útil para gerenciamento remoto de arquivos, relatórios ou controle de diretórios.
Por que usar PHP para construir a API?
PHP é uma das linguagens mais populares para desenvolvimento web e oferece recursos simples para acessar o sistema de arquivos, além de já estar integrado com o Apache na maioria dos servidores Linux. Este exemplo será direto e permitirá expandir a funcionalidade para atender a diversos casos de uso.
Estrutura da API
Vamos criar um script PHP que acessa um diretório no servidor, verifica se cada item é um arquivo ou uma pasta, e retorna essa informação em um formato JSON estruturado. Isso torna a API prática e fácil de ser consumida por outros sistemas.
Configuração do Apache
Antes de começar, certifique-se de que o servidor Apache está configurado corretamente para suportar scripts PHP. Acesse seu diretório de API e crie um novo arquivo, por exemplo, listar_diretorio.php
.
Código da API
Abaixo, está o código PHP completo da nossa API:
<?php
header('Content-Type: application/json'); // Define o tipo de retorno como JSON
$diretorio = '/caminho/do/diretorio';
$resultado = [];
if (is_dir($diretorio)) {
$arquivos = scandir($diretorio);
$arquivos = array_diff($arquivos, array('.', '..'));
foreach ($arquivos as $arquivo) {
$caminhoCompleto = $diretorio . '/' . $arquivo;
// Verifica se é um diretório ou um arquivo
if (is_dir($caminhoCompleto)) {
$resultado[] = [
'nome' => $arquivo,
'tipo' => 'diretorio'
];
} else {
$resultado[] = [
'nome' => $arquivo,
'tipo' => 'arquivo'
];
}
}
// Retorna o array em formato JSON
echo json_encode(['status' => 'sucesso', 'dados' => $resultado], JSON_PRETTY_PRINT);
} else {
echo json_encode(['status' => 'erro', 'mensagem' => 'Diretório não encontrado']);
}
?>
Explicação do Código
- Cabeçalho JSON: Definimos
Content-Type
comoapplication/json
para que o navegador ou o cliente que consome a API entenda que a resposta será um JSON. - Verificação de Diretório: A API primeiro verifica se o caminho especificado existe e é realmente um diretório.
- Listagem de Arquivos: Utilizamos a função
scandir()
para obter todos os arquivos e diretórios. Em seguida, filtramos.
e..
para evitar itens indesejados. - Estrutura JSON:
status
: Informa se a execução foi bem-sucedida (sucesso
) ou se houve um erro (erro
).dados
: Contém uma lista de arquivos e diretórios, incluindo o nome e o tipo de cada item (arquivo ou diretório).
- Tratamento de Erros: Caso o diretório não seja encontrado, a API retorna um erro no formato JSON.
Testando a API
Para testar nossa API, podemos usar o curl
no terminal ou qualquer cliente REST, como o Postman.
curl http://seu_servidor/listar_diretorio.php
Exemplo de Resposta da API
Se a execução for bem-sucedida, o retorno será algo assim:
{
"status": "sucesso",
"dados": [
{
"nome": "meu_arquivo.txt",
"tipo": "arquivo"
},
{
"nome": "minha_pasta",
"tipo": "diretorio"
}
]
}
Caso ocorra algum problema, a resposta será:
{
"status": "erro",
"mensagem": "Diretório não encontrado"
}
Conclusão
Esta API é um exemplo de como é simples e poderoso trabalhar com PHP para criar APIs RESTful que interagem diretamente com o sistema de arquivos. Essa funcionalidade pode ser expandida para incluir operações como download, upload e até mesmo edição de arquivos remotamente. A flexibilidade do PHP permite criar aplicações robustas e personalizadas.