Olá tudo bem? Me surgiu uma duvida em relação a permissão da porta para acesso a API. No caso de uma API publica, como é feita essa permissão? Como saber em qual porta será rodado o front para a API permitir o acesso?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá tudo bem? Me surgiu uma duvida em relação a permissão da porta para acesso a API. No caso de uma API publica, como é feita essa permissão? Como saber em qual porta será rodado o front para a API permitir o acesso?
Olá, Gabriel! Como vai?
Sua pergunta é muito pertinente e a resposta está relacionada com a política de CORS (Cross-Origin Resource Sharing), que é uma política de segurança implementada pelos navegadores para evitar que recursos sejam acessados por domínios diferentes do domínio de origem, a menos que seja explicitamente permitido.
No contexto do curso, a API está sendo executada na porta 8080 e o front-end na porta 5501. Como essas são consideradas origens diferentes pela política de CORS, é necessário configurar a API para permitir que o front-end acesse seus recursos.
Para isso, foi criada uma classe CorsConfiguration na aplicação back-end (API). Essa classe implementa a interface WebMvcConfigurer do Spring e sobrescreve o método addCorsMappings(). Nesse método, é adicionado um mapeamento que permite que qualquer URL (por causa do "/**") do domínio "http://127.0.0.1:5501" acesse a API. Além disso, são configurados os métodos HTTP que podem ser usados nesse acesso, como "GET", "POST", "PUT", "DELETE", entre outros.
Vou te mostrar um exemplo prático:
package br.com.alura.screenmatch.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://127.0.0.1:5501")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT");
}
}
Neste exemplo, a API está sendo configurada para permitir que qualquer URL do domínio "http://127.0.0.1:5501" a acesse usando os métodos HTTP "GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "TRACE", "CONNECT".
Portanto, em uma API pública, essa permissão seria feita de maneira semelhante, mas permitindo provavelmente o acesso de qualquer origem (usando "*" em vez de um domínio específico) e limitando possivelmente os métodos HTTP permitidos, dependendo das necessidades da API.
Espero ter ajudado e bons estudos!