2013-11-03 2 views
0

Ok Im построения API и мне нужны маршруты, так что я могу получить доступ к ним, как это:маршрутизации не контроллер restfull с поддоменов

api.example.com/action

или

api.example .com/action2

те не являются успокоительными действиями на моем контроллере API:

class ApiController < ApplicationController 
    def action1 
    #code 
    end 

    def action2 
    #code 
    end 
end 

Как я могу направить их, любые указатели?

+0

Было бы намного легче достичь этого выполнив 'example.com/api/action'. Что-то, что мы делаем на работе, это 'domain.com/api/v1/...', поскольку это позволяет нам выполнять управление версиями на нашем API. –

+0

его требование, чтобы оно было в его собственном поддомене. –

ответ

2

Вы хотите, чтобы и www.domain.com, и api.domain.com указывали на то же приложение рельсов.

В файле маршрутов вам потребуется установить ограничение, чтобы выполнять только набор маршрутов, когда это ограничение истинно. Ограничение, которое вы собираетесь использовать, просто проверит, будет ли субдомен текущего запроса 'api'. Это может быть достигнуто с помощью следующего сегмента кода:

конфигурации/routes.rb:

constraints subdomain: 'api' do 
    # Standard Routing 
    match '/action1' => 'api#action1' 

    # Wildcard Routing 
    match '/:action" => 'api#%{action}' 
end 

Запрос Ограничения: http://guides.rubyonrails.org/routing.html#request-based-constraints

подстановочные Сегменты: http://guides.rubyonrails.org/routing.html#route-globbing-and-wildcard-segments

+0

и есть ли способ для них быть подстановочными действиями примерно так: match '/ *' => 'api # *' –

+1

Не могли бы вы выполнить 'match '/: action" =>' api #% {action} '??? – CDub

+0

Правильно, это выглядит как правильный шаблон подстановки :) –

Смежные вопросы