Saya memiliki aplikasi dengan Django backend dan reaksi frontend. Saat menguji dan mengkode, saya menjalankan aplikasi Django saya di server lokal 127.0.0.1:8000 dan menghubungkan semua permintaan reaksi saya ke titik akhir tersebut. Namun dalam produksi aplikasi Django saya berjalan pada alamat ip yang berbeda dan setiap kali saya mengubah kode saya dan mendorong aplikasi reactjs saya ke server produksi saya harus mengubah semua ip titik akhir.

Apa cara terbaik untuk menanganinya? (sebagai kontrol sumber saya menggunakan git saya tidak tahu apakah itu membuat perbedaan)

0
K.Doruk 19 November 2020, 16:20

1 menjawab

Jawaban Terbaik

Saya mengatur axios.defaults.baseURL tergantung pada window.location.origin. Inilah pengaturan saya:

if (window.location.origin === "http://localhost:3000") {
  axios.defaults.baseURL = "http://127.0.0.1:8000";
} else {
  axios.defaults.baseURL = window.location.origin;
}

Konfigurasi di atas berasal dari artikel saya Docker-Compose for Django dan Bereaksi dengan proxy terbalik Nginx dan sertifikat Let's Encrypt. Saya melayani React dengan nginx, dan memiliki reverse-proxy ke Django (juga di nginx), itu sebabnya untuk pengaturan produksi saya hanya menggunakan alamat yang sama. Dalam hal pengembangan, saya memiliki REST API di 127.0.0.1:8000.

Saya lebih suka pengaturan dinamis ini daripada mengatur file env karena saya tidak perlu mengatur variabel lingkungan apa pun.

1
pplonski 19 November 2020, 16:53