2013-03-01 2 views
7

나는 API를 만들려고 노력하고 있으며, 모든 리소스가 api.myapp.com 도메인에 액세스 할 수 없거나 잘못된 uris로 "살"할 것이라고 우려하고 있습니다.API 하위 도메인, 가능합니까?

도메인 이름에 대한 CNAME을 추가하여 Heroku 앱을 가리 킵니다. :

내가 https://api.myapp.com에 GET은 https://myherokuapp.heroku.com/api/v1

로 이동 있도록하는 API의 하위 도메인을 설정하고 싶습니다 (예는 www.myapp.com를 탐색하는 것은 https://myherokuapp.heroku.com로 이동합니다) 가장 좋은 시나리오는 https://api.myapp.com/accounts/12345에 대한 POST가 새 계정을 생성한다는 것입니다. 그게 가능한가?

내가 대답은 세 가지 다른 장소에있을 수 있습니다 믿습니다 할

  1. 뭔가 :

    (mysubdomain.myappname.heroku.com) Heroku가 불가능하다 나는 하위 도메인 (예 : 것을 알고) DNS 제공자 포워딩 설정 (어쩌면 "A"레코드와 관련이 있습니다).

  2. 도메인/하위 도메인을 처리 할 수있는 유료 애드온 인 Heroku에서 설정해야 할 것이 있습니다.
  3. 내 앱 내의 모든 하위 도메인을 처리합니다.
+0

헤이 @Scott 내가이 똑같은 일을 시도하고 있지만, Heroku가와에서 GoDaddy이 - 그들이 작동시킬 수없는 것. 위의 솔루션에 답변을 게시 할 수 있습니까? 즉, 경로 파일입니까? 따라서 귀하의 답변을 본 1500 명의 사람들에게 매우 편리 할 것입니다. – BKSpurgeon

+0

@BKSpurgeon이 질문을 한 이래로 거의 4 년 전이었습니다.)하지만 대답은 아래 주석에 있습니다. 1. 내 DNS에 CNAME (별칭) api.myapp.com을 추가하고 to the myherokuapp.heroku.com 2. 도메인 api.myapp.com을 Heroku에 추가하십시오. 3. 노드 응용 프로그램의 모듈을 사용하여 서브 도메인 라우팅을 처리하십시오. https://www.npmjs.com/package/express-subdomain을 사용하여 모든 API 하위 도메인 트래픽을 myherokuapp.heroku.com/api/v1에서 API 끝점으로 라우팅했습니다. 그 이후로 나는 디지털 오션 ($ 5/월)에 DIY 서버를 가지고 있으며 앱을 치기 전에 Nginx로 라우팅을합니다. – Scott

답변

2

당신은 api.mydomain.com 및 www.mydomain.com이

constraints :subdomain => "api" do 
    scope :module => "api", :as => "api" do 
    resources :posts 
    end 
end 
을 처리하기 위해 당신은 확실히 레일 노선이 API의 하위 도메인으로 제한 사용할 수 있습니다 귀하의 API 요청에 대해 서로 다른 컨트롤러를 구분하려면

그러면 응용 프로그램의 app/controllers/api 폴더에 posts_controller.rb가 사용됩니다.

그러면 www.mydomain.com과 api.mydomain.com이 모두 응용 프로그램에 대한 사용자 정의 도메인을 추가 한 다음 나머지 경로가 처리됩니다.

당신은 또한 당신의 API를 구축 할 수 있도록하기위한 Grape 보석을 조사 할 수 있습니다

+0

흥미로운 접근 방식, 비록 Node.js를 사용하고 있지만 아이디어는 같습니다. 그래서 내 응용 프로그램에서 들어오는 모든 하위 도메인 요청을 처리 할 수 ​​있다고 제안합니다. 내 DNS 공급자의 DNS 전달을 사용할 수 있으며 "https://myapp.com"과 같은 내용을 "https://myherokuapp.heroku.com/api/v1"로 전달할 수 있지만 어떻게 만들지는 모르겠다. "https://api.myapp.com"을 "https : //api.myherokuapp"로 전달하십시오.heroku.com "나는 이것이 가능하다고 생각하지 않으며, api.myapp.com에 대한 어떤 공격이라도 주소창 변경을 초래할 것입니다 ... 그리고 나의 URI는 heroku의 앱 이름에 묶일 것입니다. ? – Scott

+2

heroku 앱 (예 : api.mydomain.com 및 www.mydomain.com)에 여러 도메인을 가질 수 있습니다. 둘 다 myapp.herokuapp.com에 CNAME하고 heroku 제어판을 통해 사용자 정의 도메인으로 추가 할 수 있습니다. 주소 표시 줄 변경이 표시되지 않습니다. 즉, 방문자가 api.myapp.com을 방문하면 www.myapp.com이 그대로 유지됩니다. 일단 신청서를 제출하면 요청 된 하위 도메인을 기반으로 요청을 처리합니다. 이제까지 코딩 한 언어는 무엇입니까? –

+1

CNAME에 대한 귀하의 조언은 내가 필요로하는 것이 었습니다. 이제 URL은 api.myapp.com이 될 수 있으며 URL을 변경하지 않고 myherokuapp.heroku.com으로 리디렉션됩니다. : 1. 내 DNS에 CNAME (별칭) api.myapp.com을 추가하고 myherokuapp.heroku.com을 가리 키십시오. 2. 도메인 api.myapp.com을 Heroku에 추가하십시오. 3. 내 응용 프로그램의 모듈을 사용하여 하위 도메인을 처리하십시오. – Scott