Backend

O Backend representa outro componente importante do modelo de desenvolvimento para web que está sendo adotado neste livro. Como já informado, a comunicação ocorre entre Frontend e Backend. O primeiro, utilizando tecnologias como HTML, CSS, JavaScript e AngularJS. O segundo, utilizando tecnologias como PHP e Silex.

Esta seção apresenta o conteúdo sobre backend necessário para a criação da lógica do lado do servidor, utilizando um modelo de API REST. Para isso, será utilizada uma combinação de PHP+Silex.

API REST

Silex

O conteúdo desta seção é baseado na documentação oficial do Silex.

Silex é um microframework para PHP. É construído com base em Symfony2 e Pimple, além de ser inspirado pelo Sinatra.

A instalação do Silex pode ser feita utilizando Composer, bastando executar o comando a seguir no prompt de comando, estando na pasta do projeto PHP em questão:

composer require silex/silex

Estrutura básica

A estrutura básica de um programa com Silex é a seguinte:

require_once 'vendor/autoload.php';
$app = new Silex\Application();
$app->run();

O código importa o arquivo vendor/autoload.php (do composer), cria uma instância de Silex\Application e executa o método run(). Esta é a estrutura padrão. Entre a instanciação de Silex\Application e a chamada do método run() são definidas as rotas e os controllers que representam a primeira forma de tratar requisições e representar lógica de negócio.

Em desenvolvimento, pode ser interessante visualizar mensagens de erro de processamento do Silex de forma mais detalhada. Para isso, utilize o seguinte:

$app['debug'] = true;

Roteamento

Silex, como um framework REST, é baseado em rotas. Por meio de uma rota, pode-se definir o controller que será chamado quando a rota for encontrada. Em alto nível, a sintaxe é a seguinte:

$app-><metodo>(<rota>, <controller>);

Onde:

  • <metodo>: representa o método HTTP associado à rota;
  • <rota>: representa o padrão da rota em questão (uma string);
  • <controller>: representa a função que trata a rota, o que é chamado de controller.

Exemplo:

$app->get('/home', function() {
    return '<h1>Página inicial</h1>';
});

O código define:

  • a rota utiliza o verbo GET do HTTP;
  • a rota é baseada no padrão /home e informa o controller (a função anônima, neste caso), que trata a rota.

O Silex trata as rotas registradadas no momento em que recebe uma requisição. Para ver o resultado da rota definida no exemplo anterior, é necessário acessar, no browser, a URL /home (exemplo: http://localhost/home).

Configuração do servidor web

Por padrão, o Silex trata rotas a partir do arquivo index.php. Por exemplo, uma requisição para http://localhost/index.php/produtos/1 é tratada pela rota /produtos/{id}.

Entretanto, pode ser interessante fazer com que as URLs sejam melhor apresentáveis e limpas. Por exemplo, ao invés de a URL ser http://localhost/index.php/produtos/1 poderia ser http://localhost/produtos/1.

Para fazer isso, considerando o servidor web Apache, pode ser utilizado o mod_rewrite. Crie o arquivo .htaccess no diretório raiz do aplicativo e informe o seguinte conteúdo:

<IfModule mod_rewrite.c>
    Options -MultiViews

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
</IfModule>

Se o aplicativo não estiver no diretório raiz do servidor web, adicione a linha a seguir logo após Options ...:

RewriteBase /caminho/para/o/aplicativo

Por exemplo, se o diretório raiz do servidor web for c:\xampp\htdocs e o diretório raiz do aplicativo for c:\xampp\htdocs\aplicativo então a linha que usa RewriteBase deve ser:

RewriteBase /aplicativo

results matching ""

    No results matching ""