2013-03-01 25 views
7

Bir API oluşturmaya çalışıyorum ve tüm kaynakların ya api.myapp.com alan adıyla erişilemeyeceği ya da yanlış URL'lerle "yaşayacağı" konusunda endişelerim var.API alt alan adı mümkün mü?

Etki alanı adım için CNAME'yi Heroku uygulamasına yönlendirmek için ekledim. :

Ben https://api.myapp.com bir GET https://myherokuapp.heroku.com/api/v1

götürür, böylece bir API alt alan kurmak istiyorum (ex www.myapp.com için gezen https://myherokuapp.heroku.com götürür) En iyi senaryo, POST https://api.myapp.com/accounts/12345'un yeni bir hesap oluşturmasıdır. Bu mümkün mü?

Cevabın üç farklı yerde olabilir inanıyoruz: yapmak

  1. Something:

    (mysubdomain.myappname.heroku.com) Heroku mümkün olmayan ben alt alanları (örn biliyoruz) DNS sağlayıcı iletme yapılandırmaları ile (belki "A" kayıtları ile ilgili bir şey).

  2. Heroku'da yapılandırılacak bir şey, etki alanlarını/alt etki alanlarını işlemek için ücretli bir eklenti olabilir.
  3. Uygulamamdaki tüm alt alanları işleyin.
+0

hey @Scott ben bu aynı şey yapmaya çalışıyorum ama Heroku ve GoDaddy - onları işe almak gibi olamaz. Cevabınızı yukarıdaki çözüme gönderebilecek misiniz? Bu nedenle cevabınızı inceleyen 1500 kişi için çok kullanışlı olurdu. – BKSpurgeon

+0

@BKSpurgeon Bu soruyu sorduğumdan neredeyse 4 yıl önceydi;) Ama evet, cevap aşağıdaki yorumlarda yer alıyor: 1. CNAME (Alias) api.myapp.com adresini DNS'ime ekle ve göstermesini sağla to myherokuapp.heroku.com 2. api.myapp.com alan adını Heroku'ya ekleyin. 3. Subdomain yönlendirmesini işlemek için düğüm uygulamanızda bir modül kullanın. Tüm api alt alan trafiğini myherokuapp.heroku.com/api/v1 adresindeki API bitiş noktasına yönlendirmek için https://www.npmjs.com/package/express-subdomain kullanılır. O zamandan beri, Digital Ocean'da ($ 5/mo) bir DIY sunucum var ve hatta uygulamayı vurmadan önce Nginx ile yönlendirme yapıyor. – Scott

cevap

2

sen api.mydomain.com ve www.mydomain.com ve bu

constraints :subdomain => "api" do 
    scope :module => "api", :as => "api" do 
    resources :posts 
    end 
end 
işlemek için o zaman kesinlikle Raylar yolları sizin api alt alana gelen kısıtlı kullanın olabilir API istekleri için farklı denetleyicileri var ayırt etmek istiyorsanız

daha sonra uygulamanızın app/controllers/api klasöründe posts_controller.rb dosyasını kullanır.

Daha sonra hem www.mydomain.com hem de api.mydomain.com adresinizin uygulamanız için özel alan adı ekledikten sonra kalanları da izleyeceksiniz.

Ayrıca API inşasına yardım için Grape Gem içine bakmak isteyebilirsiniz

+0

ilginç bir yaklaşım, Node.js kullanıyorum rağmen fikir aynıdır. Bu yüzden, uygulamamın tüm gelen alt alan adı isteklerini ele alabileceğini öneriyorsunuz. DNS sağlayıcımı kullanarak DNS sağlayıcımı kullanabilir ve "https://myherokuapp.heroku.com/api/v1" adresine "https://myapp.com" gibi bir şey iletebilirim ancak nasıl yapılacağını anlamıyorum. "https://api.myapp.com" adresini "https: //api.myherokuapp" adresine yönlendirin.heroku.com "Bunun mümkün olduğunu düşünmüyorum ve api.myapp.com adresindeki herhangi bir isabet, adres çubuğunun değişmesiyle sonuçlanacak ... ve URI'mm, Heroku'nun uygulama adına bağlı olacak. ? – Scott

+2

Bir heroku uygulamasında birden çok alan adına sahip olabilirsiniz, örneğin api.mydomain.com ve www.mydomain.com - her ikisini de myapp.herokuapp.com adresinde CNAME ve daha sonra bunları heroku kontrol paneli aracılığıyla özel alan adları olarak eklersiniz. adres çubuğunun değiştiğini görmez, yani bir ziyaretçi api.myapp.com'a isabet ederse, bu durumda kalır ve www.myapp.com bu şekilde kalırdı. Uygulamanızdan sonra, istekte bulunan alt alana dayalı isteği işleyebilirsiniz. ne kod yazıyorsunuz? –

+1

CNAME hakkındaki tavsiyeniz, ihtiyacım olan şeydi. URL şimdi api.myapp.com olabilir ve URL'yi değiştirmeden myherokuapp.heroku.com adresine yönlendirir. : 1. CNAME (Alias) api.myapp.com adresini DNS’ime ekleyin ve t myherokuapp.heroku.com adresine gelin 2. api.myapp.com alan adını Heroku'ya ekleyin. 3. Alt alan adları işlemek için uygulamamdaki bir modülü kullanın. – Scott

İlgili konular