- Implementando RESTful com Spring Boot
Implemente uma API RESTful API para controlar alunos
- Crie um novo projeto Spring Boot
- Implemente um classe para representar o objeto
Aluno
class Aluno {
Long id;
String nome;
Integer matricula;
String email;
// getters/setters
}
- Implemente um
@RestController
com os endpoints RESTful para gerenciar as ações de listar
, criar
, atualizar
e excluir
- Execute e teste a aplicação
Manipule a negociação de conteúdo com REST
- Utilize o projeto definido anteriormente
- Realize a configuração para negociação de conteúdo JSON e/ou XML (conforme slide)
- Revise a implementação dos endpoints RESTful para configurar o suporte à serialização de retorno JSON e XML
@RequestMapping(path = "/service",
method = RequestMethod.GET,
produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
- Adicione o suporte a renderização (parser) XML no bean de
Aluno
@XmlRootElement
public class Aluno {
...
}
- Execute e teste a aplicação negociando o conteúdo desejado
Configure o comportamento HATEOAS na API REST
- Utilize o projeto definido anteriormente
- Configure as dependências do Spring HATEOAS
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
- Modifique a implementação do objeto
Aluno
para tornar-se um ResourceSupport
- Modifique a implementação dos endpoints RESTful para adicionar os hyperlinks HATEOAS
- Execute e teste a aplicação
Implemente uma classe de teste para @RestController
- Utilize o projeto defindo anteriormente
- Implemente uma classe de teste para a API RESTful de alunos
- Utilize a configuração
@WebMvcTest
para facilitar a implementação do unit test
- Injete o objeto MockMvc para simular as requisições HTTP send realizadas no controller
- Execute a classe de teste com sucesso
Documente API com Swagger
- Utilize o projeto definido anteriormente
- Configure as dependências do Swagger Code e UI
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
- Habilite a configuração do Swagger na aplicação Spring Boot
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
- Documente algums endpoints RESTful que foram implementados utilizando as Swagger annotations
@ApiOperation
, @ApiResponse
, @ApiParam
, etc
- Execute a aplicação e verifique a documentação publicada