Você criará um webservice que aceitará solicitações HTTP GET em http://localhost:8080/alo.
A resposta será uma representação JSON de um objeto, como mostrado a seguir:
{"id":1,"content":"alô mundo"}
Para todos os aplicativos Spring, você deve começar com o Spring Initializr . O Initializr oferece uma maneira rápida de obter todas as dependências de que você precisa para um aplicativo e faz grande parte da configuração para você. Vamos precisar neste exemplo apenas da dependência Spring Web.
A seguir é mostrado o arquivo pom.xml criado:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.professorangoti</groupId> <artifactId>teste</artifactId> <version>0.0.1-SNAPSHOT</version> <name>teste</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Agora que configurou o projeto, você pode criar seu serviço da web. Comece o processo pensando nas interações de serviço.
O serviço tratará as requisições GET /alo
, e retornará uma resposta HTTP com código 200 OK e corpo no formato JSON que representa um objeto do domínio. Deve ser semelhante à seguinte saída:
A classe Java simples que representa a resposta deverá conter campos, construtores e getters/setters os dados id e conteúdo como na listagem seguinte:
package com.professorangoti.restservice; public class Dominio { private static long id; private final String conteudo; public Dominio(String conteudo) { ++id; this.conteudo = conteudo; } public long getId() { return id; } public String getConteudo() { return conteudo; } }
Na abordagem do Spring para construir webservices RESTful, as requisições HTTP são tratadas por um controlador. Esses componentes são identificados pela anotação @RestController
, e a classe mostrada na seguinte listagem lida com as requisições GET /alo retornando uma nova instância da classe Dominio
:
package com.professorangoti.restservice; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class Controlador { @GetMapping("/alo") public Dominio greeting() { return new Dominio("alô mundo"); } }
Uma diferença importante entre um controlador MVC tradicional e o controlador RESTful é a maneira como o corpo de resposta HTTP é criado. Em vez de depender de uma tecnologia de visualização para realizar a renderização do lado do servidor para HTML, este controlador cria um objeto e os dados do objeto serão usados diretamente no corpo da resposta HTTP no formato JSON.
Execute a classe criado pelo Initializr para iniciar o serviço. O código da aplicação é mostrado a seguir:
package com.professorangoti; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class TesteApplication { public static void main(String[] args) { SpringApplication.run(TesteApplication.class, args); } }
Agora que o serviço está ativo, visite http://localhost:8080/alo
, onde você verá: