Como Criar uma API REST em PHP para Listar Arquivos de um Diretório no Linux


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

  1. Cabeçalho JSON: Definimos Content-Type como application/json para que o navegador ou o cliente que consome a API entenda que a resposta será um JSON.
  2. Verificação de Diretório: A API primeiro verifica se o caminho especificado existe e é realmente um diretório.
  3. Listagem de Arquivos: Utilizamos a função scandir() para obter todos os arquivos e diretórios. Em seguida, filtramos . e .. para evitar itens indesejados.
  4. 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).
  1. 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.

Rolar para cima