2013-03-01 27 views
7

Tôi đang cố gắng xây dựng một API và tôi lo ngại rằng tất cả tài nguyên của tôi sẽ không thể truy cập được bằng miền api.myapp.com hoặc rằng họ sẽ "sống" với uris sai.Tên miền phụ API cho ứng dụng Heroku, có thể không?

Tôi đã thêm CNAME cho tên miền của mình để trỏ tới ứng dụng Heroku của tôi. (ví dụ: duyệt tới www.myapp.com sẽ đưa bạn đến https://myherokuapp.heroku.com)

tôi muốn thiết lập một tên miền phụ API, do đó một GET để https://api.myapp.com sẽ đưa bạn đến https://myherokuapp.heroku.com/api/v1

Các kịch bản tốt nhất sẽ là POST tới https://api.myapp.com/accounts/12345 sẽ tạo tài khoản mới. Điều đó thậm chí có thể?

(Tôi biết rằng tên miền phụ (ví dụ: mysubdomain.myappname.heroku.com) là không thể với Heroku)

Tôi tin rằng câu trả lời có thể là ở ba nơi khác nhau:

  1. Cái gì để làm với cấu hình chuyển tiếp của nhà cung cấp DNS (có thể một số việc cần làm với bản ghi "A").
  2. Nội dung nào đó để định cấu hình trong Heroku, có thể là tiện ích bổ sung trả phí để xử lý tên miền/tên miền phụ.
  3. Xử lý tất cả các tên miền phụ trong ứng dụng của tôi.
+0

hey @Scott tôi đang cố gắng để làm điều tương tự chính xác này nhưng Heroku và GoDaddy - dường như không thể nhận được chúng để làm việc. bạn có thể đăng câu trả lời của mình lên giải pháp trên: tức là tệp tuyến đường của bạn không? điều đó sẽ rất tiện lợi cho 1500 người đã xem câu trả lời của bạn. – BKSpurgeon

+0

@BKSpurgeon Đã gần 4 năm trước kể từ khi tôi hỏi câu hỏi này;) Nhưng có, câu trả lời nằm trong phần bình luận bên dưới: 1. Thêm CNAME (Bí danh) api.myapp.com vào DNS của tôi và ghi điểm myherokuapp.heroku.com 2. Thêm tên miền api.myapp.com vào Heroku. 3. Sử dụng một mô-đun trong ứng dụng nút của bạn để xử lý định tuyến tên miền phụ. Tôi đã sử dụng https://www.npmjs.com/package/express-subdomain để định tuyến tất cả lưu lượng truy cập tên miền phụ api đến điểm cuối API tại myherokuapp.heroku.com/api/v1. Kể từ đó, tôi có một máy chủ DIY tại Digital Ocean ($ 5/mo) và thực hiện định tuyến với Nginx trước khi nhấn vào ứng dụng. – Scott

Trả lời

2

Nếu bạn muốn phân biệt giữa api.mydomain.com và www.mydomain.com và có bộ điều khiển khác nhau cho các yêu cầu API của bạn thì bạn có thể chắc chắn sử dụng các tuyến đường Rails hạn chế để subdomain api bạn để xử lý này

constraints :subdomain => "api" do 
    scope :module => "api", :as => "api" do 
    resources :posts 
    end 
end 

sau đó sẽ sử dụng tệp posts_controller.rb trong thư mục app/controllers/api của ứng dụng của bạn.

Sau đó, bạn sẽ có cả www.mydomain.com và api.mydomain.com đã thêm tên miền tùy chỉnh cho ứng dụng của bạn và sau đó tuyến đường sẽ quản lý phần còn lại.

Bạn cũng có thể muốn nhìn vào Grape Gem vì đã giúp xây dựng api của bạn

+0

cách tiếp cận thú vị, mặc dù tôi đang sử dụng Node.js ý tưởng là như nhau. Vì vậy, bạn đề xuất rằng ứng dụng của tôi có thể xử lý tất cả yêu cầu tên miền phụ đến. Tôi có thể sử dụng DNS chuyển tiếp từ nhà cung cấp DNS của tôi, và chuyển tiếp một cái gì đó như "https://myapp.com" để "https://myherokuapp.heroku.com/api/v1", nhưng tôi không thấy làm thế nào để làm cho nó chuyển tiếp "https://api.myapp.com" tới "https: //api.myherokuapp.heroku.com "Tôi không nghĩ rằng điều này là có thể, và bất kỳ hit để api.myapp.com sẽ dẫn đến sự thay đổi thanh địa chỉ ... và URI của tôi sẽ được gắn liền với tên ứng dụng của heroku. Bất kỳ ý tưởng làm thế nào để có được xung quanh này ? – Scott

+2

bạn có thể có nhiều tên miền trên ứng dụng heroku, ví dụ: api.mydomain.com và www.mydomain.com - bạn sẽ CNAME cả hai tên miền này vào myapp.herokuapp.com và sau đó thêm chúng dưới dạng tên miền tùy chỉnh qua bảng điều khiển heroku. sẽ không thấy thay đổi của thanh địa chỉ, tức là nếu khách truy cập truy cập api.myapp.com, nó sẽ giữ nguyên như vậy và www.myapp.com sẽ vẫn giữ nguyên như vậy. –

+1

Lời khuyên của bạn về CNAME là những gì tôi cần, URL bây giờ có thể là api.myapp.com và nó chuyển hướng đến myherokuapp.heroku.com mà không thay đổi URL. : 1. Thêm CNAME (Bí danh) api.myapp.com vào DNS của tôi và có i t trỏ tới myherokuapp.heroku.com 2. Thêm tên miền api.myapp.com vào Heroku. 3. Sử dụng một mô-đun trong ứng dụng của tôi để xử lý các tên miền phụ. – Scott

Các vấn đề liên quan