AULA 01
Claro, vou detalhar passo a passo o que está acontecendo no código, incluindo os
conceitos de programação web como requests e ações do servidor:
1. **Importação das Bibliotecas:**
```clojure
(ns [Link]
(:require [[Link] :as route]
[[Link] :as http]))
```
O código começa definindo o namespace `[Link]` e importa duas bibliotecas:
`[Link]` renomeada para `route` e `[Link]` renomeada para `http`.
Essas bibliotecas fornecem funcionalidades para lidar com roteamento e criação de
servidores HTTP.
2. **Definição da Função de Resposta "funcao-hello":**
```clojure
(defn funcao-hello [request]
{:status 200 :body (str "Hello World" (get-in request [:query-params :name]
"Everybody"))})
```
Aqui é definida uma função chamada `funcao-hello` que recebe um parâmetro chamado
`request`. Essa função é responsável por gerar a resposta para a requisição recebida. A
resposta é um mapa contendo o status da resposta (200 OK) e o corpo da resposta.
Além disso, a função utiliza a função `str` para concatenar a string "Hello World" com o
valor do parâmetro `:name` presente nos `query-params` do `request`. Se `:name` não
estiver presente, o valor padrão "Everybody" é usado.
3. **Definição das Rotas:**
```clojure
(def routes (route/expand-routes
#{["/hello" :get funcao-hello :route-name :hello-world]}))
```
Nesta parte, é definida uma rota usando a função `route/expand-routes`. A rota é
mapeada para a URL "/hello", e especifica que a função `funcao-hello` deve ser chamada
quando uma requisição GET for feita para essa rota. Além disso, é atribuído o nome
simbólico `:hello-world` à rota.
4. **Configuração do Serviço:**
```clojure
(def service-map {::http/routes routes
::http/port 9999
::http/type :jetty
::http/join? false})
```
Nesta parte, um mapa chamado `service-map` é criado para configurar o serviço. Ele
inclui as rotas definidas anteriormente, define a porta como 9999, escolhe o servidor Jetty e
desativa a espera de inicialização imediata (`::http/join? false`).
5. **Iniciando o Servidor:**
```clojure
(http/start (http/create-server service-map))
```
Aqui, o servidor HTTP é iniciado. A função `http/create-server` cria uma instância do
servidor de acordo com as configurações em `service-map`, e a função `http/start` inicia
esse servidor.
6. **Impressão de Mensagem:**
```clojure
(println "Starded server http atualizado")
```
Por fim, uma mensagem "Started server http atualizado" é impressa no console para
indicar que o servidor foi iniciado com sucesso.
Resumidamente, o código define um servidor HTTP usando a biblioteca Pedestal em
Clojure, cria uma rota "/hello" que responde a requisições GET com uma saudação
personalizada e inicia o servidor para ouvir na porta 9999. O valor do parâmetro `:name` é
extraído dos `query-params` da requisição para personalizar a saudação.
AULA 02