2017-01-24 9 views
7

Bu bir süredir beni rahatsız ediyor ve her hafta, farklı bir takım artıları ve eksileriyle karşılaşıyorum.Angular 2 uygulamasında arka plan API URL'sinin çalışma zamanı konfigürasyonu için öneriler

Bunun en iyi yolu, iyi bir SPA'nın 2 farklı parçaya bölünmesidir. Ön uç ve arka uç. Ön uç, yalnızca asıl verileri sunarken ve dinamik olduğunda statik dosyalar (javascript, css, html, vb.) Hakkında olmalıdır. Ancak, her zaman ön uç ile dinamik görünmek istediğim tek parça arka uç URL olduğunu.

Demek istediğim, genelde benim uygulamamıza hizmet verdiğim için http://server:123/ ve benim API'm http://other:456/api. Sıklıkla, other ve server aynıdır ve bağlantı noktaları değişir, ancak ölçeklendiğimizde bu her zaman geçerli değildir.

Yani, sorum şu: Angular 2 uygulamasına yapılandırma verileri sağlama konusunda en iyi yöntemler nelerdir?

vekil

Çoğu web sunucuları, hatta çoğunlukla statik içerik odaklı olanlar, proxy yapılandırması çeşit sunuyoruz (nginx, açısal-cli: Burada

Zaten düşünce budur hizmet vb. Proxy ile ilgili sorun, isteğin çift atlama yapmasıdır. İlk önce statik sunucusuna gönderilmeli ve bu sunucu geri dönmeli ve gerçek talebi yapmalıdır. Bu mimarinin hayranı değilim, ancak geçmişte diğer uygulamalarda kullandım.

yapılandırma dosyası Bu, şu anda benim favorim. Bir ya da daha fazla URL ya da diğer hassas olmayan bilgileri içeren statik içerik sunucumdan neredeyse bir statik dosya (/config.json diyelim) sunarım. Bu yaklaşımı beğeniyorum, çünkü bir proxy kullanmanıza ya da 'a izin vermez. Sana kalmış. Çoğu zaman, web sunucunuzu bir url'ye göre statik bir dosyaya döndürecek şekilde yapılandırmak oldukça kolay (/config diyelim).

kodu yapılandırma

Bu benim en sevdiğim. Bu yaklaşımda, yapılandırma doğrudan bir kod dosyasına (örneğin, config.ts) yazılır ve her ortam için değiştirilmelidir. Kod ve konfigürasyonu 2 farklı görev olarak görüyorum ve çalıştığım şirketin çoğunda 2 farklı ekip tarafından ele alındı. Kodunuzu yeniden derlemek ve sadece arka uç URL'nizi değiştirmek için yeniden dağıtmak saçma olurdu.

+0

Şu anda aynı ikilemle karşı karşıyayım - hazırlama/üretime dağıtmak için bir CI sunucusu kullanarak. Sorununuzu nasıl çözdünüz? – RVandersteen

+0

@RVandersteen, yapılandırma dosyasına gittim. Verilerimize hizmet etmek için 'nginx''i ve çeşitli ortamlarımıza (QA, Staging, vb. Düşünün) 'Şef'i kullanmak için kullanıyoruz. Bu, API URL'lerini değiştirmeyi kolaylaştırdı. –

+0

Teşekkürler - Yani bir statik config.json dosyası ve daha sonra onu almak ve varsayım değerleri ayarlamak bir Açısal 2 hizmetiniz var. Bunu bootstrap üzerinde yaparsanız veya gerektiğinde – RVandersteen

cevap

0

Yapılandırma dosyalarını kullandım, ancak DevOps araçlarıyla ortam değişkenlerini ayarlamayı tercih ediyorum.

Kaplar daha basit yapılandırma için ortam değişkenlerini kullanıyorum. Aksi takdirde, Redis gibi bir arka uç konfigürasyon mağazasının konfigürasyonunu geçiririm veya şimdi bir gün Kube Sırları (kullanımı daha kolay).