Skip to content

Instantly share code, notes, and snippets.

@afonsoaugusto
Last active January 10, 2021 12:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save afonsoaugusto/d94b1635eaab0fa64756aa35da240873 to your computer and use it in GitHub Desktop.
Save afonsoaugusto/d94b1635eaab0fa64756aa35da240873 to your computer and use it in GitHub Desktop.

Spring + Hibernate para uma API Rest

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

Inicialização

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*

Imgur

Dependencias

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;
	}
}

Execução se o projeto estiver executando

Referencias

obs: passar um corretor no texto

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment