Depois de enteder como funciona o modelo cliente-servidor e como a comunicação acontece, é hora de subir um servidor para nossa aplicação.
No artigo sobre modelo cliente-servidor foi explicado que uma aplicação Web é classificada como uma aplicação distribuída visto que uma parte é executada no servidor e uma parte no cliente que estão fisicamente separados e se comunicam via Internet.
Isso acontece quando uma aplicação está já finalizada, porém enquanto ainda está em fase de desenvolvimento utilizamos uma abordagem diferente, na qual tanto servidor quanto cliente estão no mesmo espaço físico, ou seja, no mesmo computador.
É importante compreender esse conceito pois ele pode causar confusão, visto que desenvolvemos uma aplicação para ser usada em um ambiente em que os computadores são fisicamente separados porém no desenvolvimento usamos um único computador para desenvolver.
A imagem a seguir mostra a arquitetura usada pela aplicação funcionando em um ambiente real. Nela temos diveros clientes - dispositivos que acessam a aplicação - e um servidor - computador que hospeda o software, que fica escutando as requisições e respondendo. Por fim, toda essa comunicação entre clientes e servidor acontece via Internet.
Em um ambiente de desenvolvimento temos os mesmos atores porém eles estão no mesmo computador, como mostra a imagem a seguir. Na imagem é possível observar que o navegador (representando o cliente) e o servidor estão no mesmo computador e nesse caso a comunicação entre eles acontece via própria rede interna do computador.
Se você se lembrar para que a comunicação entre o cliente e servidor possa ocorrer, é necessário que o cliente saiba o endereço do servidor. No caso quando a aplicação está funcionando temos uma URL que representa o endereço do servidor, por exemplo: . Vimos também que essa URL é um nome que representa o endereço IP do servidor, que é um número que identifica o computador na rede. Logo se quisermos acessar o servidor do Google poderíamos acessar diretamente através de seu endereço IP, que é 142.251.129.99.
Outra informação importante é que dentro de um servidor existem diversas aplicações em portas diferentes. No caso de aplicações Web a porta padrão é a porta 80, logo os navegadores já estão configurados para mesmo que você não coloque a porta, ele vai acessar a porta 80. Do outro lado os servidores HTTP costumam também utilizar a porta 80 para receber as requisições, dessa maneira a porta fica transparente para o usuário final.
Porém agora estamos no desenvolvimento local, logo não temos um endereço IP para acessar o servidor. Para resolver esse problema, o sistema operacional possui um endereço IP especial chamado de endereço de loopback, que é o endereço 127.0.0.1. Esse endereço é um endereço especial que representa o próprio computador, logo se acessarmos esse endereço estaremos acessando o próprio computador.
Para não precisar ficar digitando o endereço IP, o sistema operacional tem um atalho para esse endereço, que é o nome localhost. Logo se acessarmos o endereço [http://localhost] estamos acessando o próprio computador.
Sabendo dessas informações podemos partir para configurar um servidor HTTP em nossa aplicação para que este possa ficar ouvindo as requisições e responder com uma resposta HTTP. Um servidor HTTP é um software que recebe requisições HTTP e responde com uma resposta HTTP. Existem diversos servidores HTTP disponíveis no mercado, e cada um deles possui suas características e funcionalidades. Exemplos de servidores são o Apache, o Nginx e o Tomcat. No caso do Spring Boot, o servidor padrão é o Tomcat.
Para configurar o servidor HTTP no Spring Boot é necessário adicionar a dependência “Spring Boot Starter Web”. Você pode encontrá-la no site https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web. Essa dependência vai adicionar um servidor HTTP chamado Tomcat na aplicação.
Para adicionar a dependência, basta adicionar as seguintes linhas no arquivo pom.xml
:
A versão do Spring Boot pode ser diferente, porém é recomendado utilizar a versão mais recente disponível.
Depois da configuração, rode o projeto com spring mvn clean spring-boot:run
. Se tudo estiver correto, o projeto será compilado e executado e você deve ser capaz de identificar a seguinte mensagem no terminal:
Isso informa que o servidor HTTP Tomcat está pronto para ser utilizado e esperando por requisições na porta 8080. Para testar, abra o navegador e acesse o endereço http://localhost:8080
. Se tudo estiver correto, você deve ver a seguinte mensagem:
Apesar de a página mostrada indicar um erro, nada tem a ver com o servidor HTTP em si, mas sim com o fato de que não existe uma rota configurada para a URL acessada. O mais importante é que o servidor HTTP está funcionando e pronto para receber requisições.