5 Razões Cruciais para Usar Proxies em Aplicações Angular na Prática
Published: 2023-10-16 21:18:47

Olá, Comunidade Dev.to! 👋

Hoje, vamos falar sobre um aspecto frequentemente subestimado, mas vital, do desenvolvimento com Angular: usando proxies. Se você já trabalha com Angular há algum tempo, sabe que lidar com diferentes ambientes ou integrar várias APIs backend pode ser um desafio. Aqui, discutiremos cinco motivos convincentes para incorporar um proxy em seu workflow de desenvolvimento Angular. 🚀

1. Simplificação do Gerenciamento de CORS:
Quando trabalhamos com APIs localizadas em um domínio diferente do nosso aplicativo, deparamo-nos com problemas de CORS. Configurar CORS no lado do servidor pode não ser sempre viável, especialmente durante o desenvolvimento. Um proxy pode interceptar e modificar os cabeçalhos de solicitações, adicionando cabeçalhos CORS necessários, permitindo que você se concentre mais no desenvolvimento do aplicativo, menos na configuração do servidor.

2. Consolidação de Múltiplos Endpoints:
Em aplicações empresariais modernas, é comum integrar várias APIs. No entanto, gerenciar múltiplos endpoints pode se tornar uma tarefa árdua. Utilizando um proxy, é possível criar um ponto único de acesso, simplificando o processo de comunicação com diferentes serviços backend e, até mesmo, balanceando a carga de maneira mais eficiente.

3. Segurança Aprimorada:
Manter informações sensíveis, como chaves de API, dentro do código-fonte do lado do cliente, pode ser arriscado. Com proxies, essas informações vitais permanecem no lado do servidor, e o proxy se encarrega de adicionar as credenciais necessárias nas chamadas de API, mantendo seus segredos de aplicação protegidos contra exposição não intencional.

4. Ambiente de Desenvolvimento Mais Coeso:
Enquanto desenvolvemos, frequentemente precisamos alternar entre diferentes ambientes (desenvolvimento, teste, produção, etc.). Um proxy pode direcionar requisições para diferentes URLs base ou serviços, dependendo do ambiente atual. Isso torna o processo de desenvolvimento mais fluido e menos propenso a erros decorrentes de alternar manualmente entre ambientes.

5. Melhor Desempenho e Otimização:
Proxies podem proporcionar benefícios de desempenho através do cache de respostas de API, reduzindo a carga sobre os servidores backend e diminuindo os tempos de resposta. Além disso, eles podem comprimir e otimizar o conteúdo para acelerar ainda mais os tempos de carregamento.

## Exemplo Prático: Lidando com CORS usando Proxy em Angular
Suponha que você esteja desenvolvendo uma aplicação Angular que precisa acessar uma API externa. Durante o desenvolvimento, você percebe um erro familiar que menciona algo como "No 'Access-Control-Allow-Origin' header is present on the requested resource." Este é um problema clássico de CORS que ocorre quando seu aplicativo tenta fazer uma requisição para um domínio diferente daquele de onde seu aplicativo é servido.

Aqui está como você pode resolver isso com um proxy em Angular:

### Passo 1: Crie um arquivo de configuração de proxy.
Na raiz do seu projeto Angular, crie um novo arquivo chamado proxy.conf.json e adicione a seguinte configuração:

```
{
  "/api": {
    "target": "http://endereco-da-api-externa.com",
    "secure": false,
    "changeOrigin": true,
    "pathRewrite": {
      "^/api": ""
    },
    "logLevel": "debug"
  }
}
```
Neste exemplo, qualquer chamada HTTP do seu aplicativo Angular para um caminho que comece com /api será redirecionada para http://endereco-da-api-externa.com, que é onde sua API externa está localizada.

### Passo 2: Modifique o script de inicialização do seu pacote.

Abra o arquivo package.json e no objeto scripts, substitua o script start para usar a configuração do proxy:

```
"scripts": {
  "ng": "ng",
  "start": "ng serve --proxy-config proxy.conf.json",
  // ... outros scripts
}
```
### Passo 3: Faça requisições como se estivesse sem CORS.

Agora, em seu serviço ou componente, quando você chama a API, você faz como se estivesse na mesma origem:

```
this.httpClient.get('/api/recurso').subscribe(data => {
  // lide com a resposta
});

```
Com esta configuração, o Angular sabe que deve usar o proxy para requisitar o recurso, e o servidor de desenvolvimento manipulará as solicitações como se o CORS não fosse uma barreira, permitindo que você continue seu desenvolvimento sem problemas.

Esperamos que este exemplo prático torne o conceito de usar proxies em Angular mais tangível e fácil de implementar!

A utilização de proxies no desenvolvimento Angular oferece inúmeras vantagens, desde a simplificação do gerenciamento de CORS e a consolidação de endpoints até a melhoria da segurança e do desempenho. Enquanto pode parecer mais uma camada de complexidade no início, os benefícios a longo prazo de incorporar um proxy ao seu ambiente de desenvolvimento Angular são indiscutíveis.

Quer compartilhar suas experiências com proxies em Angular? Tem mais motivos para adicionar à lista? Use a seção de comentários abaixo. Vamos aprender juntos! 🌟

Obrigado por ler, e não esqueça de curtir e compartilhar se você achou este post útil! #angular #proxy #desenvolvimento #webdev