Neste post iremos abordar um exemplo de API Rest utilizando Spring, trarei um passo-a-passo para lhe guiar nesta caminhada. Todo o codigo utilizado como base neste texto pode ser encontrado em github.com/fcventura02/banking-crud
O projeto foi inicializado com o spring inicializr, que facilita a criação do projeto além de poder adicionar e baixar com as dependências necessárias para criar o projeto.
Aqui vai um print do https://start.spring.io/ passando as suas dependencias no print, exemplo*
Como estamos utilizando o Spring neste projeto, decidi utilizar as seguindes dependencias dele:
- Spring web (Trabalha com as requisições web)
- Spring Jpa(É uma ferramenta de mapeamento objeto relacional utilizada para cessar os dados)
- Spring Validation (É uma ferramenta de validação)
- Spring Security(É uma ferramenta de segurança)
- Spring Test (É uma ferramenta de testes) Não localizei no portal ** Detalhar um pouco mais a descrição, nada demais **
Além de outras dependências como
- H2(É um banco de dados em memória utilizado para fazer os testes)
- postgreslq(É um banco de dados utilizado para fazer o armazenamento dos dados).
Implementação (Colocar separado por itens o vc colocou no texto, não precisar colocar como "será criado", mas só o nome, pq vc já criou no projeto)
Importante colocar pedaços do codigo como exemplo
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private Environment env;
@Override
protected void configure(HttpSecurity http) throws Exception {
//Libera o gerenciamento da aplicação H2 para teste de desenvolvimento
if (Arrays.asList(env.getActiveProfiles()).contains("test")) {
http.headers().frameOptions().disable();
}
//CSRF é uma função de segurança para aplicações baseadas em seção.
//CORS liberar o acesso de outra aplicação como front-end.
http.cors().and().csrf().disable();
//Configura o banck-end para seção stateless.
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
//Libera os tipos de requisições que serão permitidas.
http.authorizeRequests().anyRequest().permitAll();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration().applyPermitDefaultValues();
configuration.setAllowedMethods(Arrays.asList("POST", "GET", "PUT", "DELETE", "OPTIONS"));
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}