1
resposta

[Dúvida] Permissão de acesso API

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?

1 resposta

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!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software