5
respostas

Configuração da URL da API

Atualmente no meu projeto React a URL do Web Service fica dentro do código (hard coding). Entretanto, peciso de alguma maneira para configurar endereços difentes no ambiente de desenvolvimento, e nos diversos ambientes de produção.

Vi algo sobre o arquivo ".env", mas ele está sendo compilado junto aos demais arquivos do projeto. Então não resolve o problema.

Alguma sugestão?

5 respostas

Opa Reinaldo, tudo certo?

O que consigo pensar para essa situação e que pode ajudar é a dotenv. Sugiro dar uma olhadinha na biblioteca dotenv que armazena a configuração no ambiente separado do código e verificar se ela se encaixa em suas necessidades.

Deixo abaixo um artigo sobre o assunto:

Fico à disposição.

Tenha um bom dia e bons estudos.

Vou ler o artigo, mas antes gostaria de fazer alguns comentários.

Já tentei usar o .env sem instalar pacote. No ambiente de desenvolvimento funciona exatamente como desejado. O problema é que quando compila(build) o arquivo faz parte do "pacotão" gerado. Então não é viável alterar a configuração após a compilação.

Preciso que estas configurações fiquem a parte do código compilado. Assim posso em cada instalação configurar um parâmetro separado.

Lendo o artigo terei isto?

Obrigado,

Li o artigo. As ferramentas apresentadas melhoram o processo. Mas ainda assim não faz muito sentido para mim.

O arquivo env é compilado (build) junto com todo o código. Isto significa que se eu tenho 10 ambientes de produção, com parâmetros diferentes, tenho que cuidadosamente selecionar o env correto e compilar a aplicação 10 vezes!!!! E se for 100 empresas a utilizar minha solução??? Vai ficando cada vez mais difícil.

Preciso que meu compilado seja único para todos meus clientes, e a configuração deles estejam separadas de forma a não ser afetadas durante a instalação de uma atualização.

Obrigado,

Opa Reinaldo.

Nesse cenário mais complexo, temos algumas soluções possíveis:

1- Optar pelo uso de arquivos de configuração separados para cada ambiente ou cliente. Em vez de depender exclusivamente do arquivo .env, uma alternativa seria criar diretórios distintos dentro do projeto para cada configuração específica e, em seguida, armazenar os arquivos de configuração correspondentes lá. Vejamos um exemplo:

/src
  /config
    /client1
      config.js
    /client2
      config.js
    /dev
      config.js
    /prod
      config.js

Dentro desses diretórios, cada arquivo config.js conteria as configurações específicas destinadas ao ambiente ou cliente correspondente.

2- Adotar um Carregamento Dinâmico. No seu aplicativo React, implementar um sistema de carregamento dinâmico para recuperar a configuração adequada conforme o ambiente ou cliente em execução pode ser uma opção. Por exemplo, você pode utilizar o pacote dotenv para carregar variáveis de ambiente a partir de arquivos, da seguinte forma:

// No seu arquivo de entrada principal (ex: index.js)
import dotenv from 'dotenv';
dotenv.config();

import config from './config'; // Carrega a configuração correta com base no ambiente/cliente
// Restante do seu código

Espero que estas sugestões sejam úteis para você!

Tenha um ótimo dia e continue aproveitando seus estudos.

Obrigado pela resposta.

Conseguirei contornar este problema com uma padronização. Suponha que o aplicativo seja configurado no endereço:

www.contoso.com/cs

Neste caso a aplicação vai procurar a API no endereço abaixo. Trocando o cs por api.

www.contoso.com/api.

As demais configurações estarão no banco de dados, aliás prefiro assim. Então pelos testes isto resolve a questão.

Obrigado.