Princípios fundamentais do Flask

Concluído

O Flask é uma “microarquitetura” Web open-source. Quando os criadores utilizam o termo “microarquitetura”, quer dizer que a arquitetura vai desempenhar as tarefas necessárias de uma arquitetura Web, mas não inclui funcionalidades avançadas ou outros requisitos específicos que a aplicação deve seguir para funcionar corretamente. Essa abordagem permite que o Flask seja extremamente flexível e perfeito para uso como front-end para back-ends ou APIs existentes - como os serviços de IA do Azure!

Ao criar uma aplicação Web com qualquer arquitetura, existem alguns conceitos centrais que precisamos de compreender: encaminhamento, métodos e modelagem. Vamos explorar estes conceitos antes de escrevermos o código.

Responder aos pedidos dos utilizadores com rotas

Quando um utilizador utiliza uma aplicação Web, indica o que quer fazer ou as informações de que está à procura, ao navegar para URLs (Uniform Resource Locators) diferentes. O utilizador pode escrever um endereço diretamente (por exemplo, https://adventure-works.com) ou selecionar uma ligação ou um botão que inclua o URL adequado. Num site de comércio eletrónico, pode ter URLs com um aspeto semelhante ao seguinte:

  • https://adventure-works.com/ para a página principal
  • https://adventure-works.com/products/widget para obter detalhes sobre um Widget
  • https://adventure-works.com/cart/buy para concluir a compra

Como programador, na realidade, não precisamos de nos preocupar com a primeira parte do URL ou com o domínio (adventure-works.com no nosso exemplo). A nossa aplicação é colocada em ação com base no que vier após o nome de domínio, que começa com /. A parte após o nome de domínio é conhecida como rota.

Uma rota é um caminho para uma ação. Semelhante a tocar num botão numa aplicação móvel, uma rota indica a ação que o utilizador quer realizar. Vamos registar rotas diferentes na nossa aplicação Web para responder aos vários pedidos que a nossa aplicação suporta.

Na nossa aplicação, indicamos a forma como queremos responder a um determinado pedido de rota ao disponibilizar uma função. Uma rota é um mapa para uma função. Quando pensamos na escrita de código no geral, este conceito é relativamente natural. Quando queremos executar uma ação em particular, chamamos uma função. Os nossos utilizadores vão fazer exatamente a mesma coisa! Apenas o vão fazer de uma forma ligeiramente diferente, ao aceder a uma rota.

Métodos ou verbos

As rotas podem ser acedidas de várias formas, através do que conhecemos como métodos ou verbos (os dois termos significam a mesma coisa e podem ser utilizados de forma intercambiável). A forma como a rota é acedida proporciona contexto adicional sobre o estado do pedido do utilizador e que ação o utilizador quer executar.

Existem muitos métodos disponíveis ao criar uma aplicação Web, mas os dois mais frequentes (e os dois sobre os quais nos vamos focar) são GET e POST. Normalmente, GET indica que o utilizador está a pedir informações, enquanto POST indica que o utilizador precisa de nos enviar algo e receber uma resposta.

Nota

Independentemente do verbo utilizado, as informações podem sempre ser devolvidas ao utilizador.

Um fluxo de aplicação comum que utiliza GET e POST gira em torno da utilização de um formulário. Vamos supor que criamos uma aplicação na qual o utilizador se quer registar numa lista de correio:

  1. O utilizador acede ao formulário de inscrição através de GET
  2. O utilizador preenche o formulário e seleciona o botão submeter
  3. As informações do formulário são enviadas de volta ao servidor com POST
  4. Uma mensagem de “êxito” é devolvida ao utilizador

Como pode calcular, o utilizador não indica diretamente o verbo que quer utilizar, este é controlado pela aplicação. Em termos gerais, se o utilizador navegar diretamente para um URL ao escrevê-lo ou ao selecionar uma ligação, obterá acesso à página GET. Quando seleciona um botão para um formulário, normalmente as informações são enviadas através de POST.

Nota

Estamos a manter esta conversa num nível relativamente elevado, dado que uma discussão completa dos métodos está para lá do âmbito deste módulo.

Modelos

A Linguagem HTML (Hypertext Markup Language) ou simplesmente HTML é a linguagem utilizada para estruturar as informações apresentadas num browser, enquanto CSS (Cascading Style Sheets) é utilizado para gerir o estilo e o esquema. Ao criar uma aplicação, a maior parte do HTML será estático, o que significa que não será alterado. No entanto, para tornar as páginas dinâmicas, é necessário conseguir colocar informações de forma programática numa página HTML. Quase todas as arquiteturas Web suportam este requisito através de modelos.

Um modelo permite-lhe escrever HTML principal (ou um modelo) e indicar marcadores de posição para as informações dinâmicas. A sintaxe mais comum para espaços reservados é, provavelmente, {{ }}. O Jinja, o motor de modelagem do Flask, utiliza esta sintaxe.

<h1>Welcome, {{ name }}</h1>

No exemplo anterior, temos o HTML de h1 (um cabeçalho), com o texto que queremos apresentar. O {{ name }} indica que queremos apresentar uma variável com o nome name, imediatamente após Bem-vindo. Ao utilizar esta sintaxe, podemos escrever o HTML com as nossas competências existentes e injetar as informações dinâmicas conforme necessário.

Verifique o seu conhecimento

1.

O Flask é uma estrutura para a criação de aplicações Web em qual das seguintes linguagens?