Здравствуйте, как я могу в Rails сделать субдомен подобного вида: https://api.lochalhost:3000
и использовать его только в качестве api, не пропуская никакие роуты, кроме заданных именно под api.
Файл config/routes.rb
Rails.application.routes.draw do
constraints subdomain: 'api' do
get '/order/:key', to: 'order#show'
end
root 'home#home'
resources :profile
resources :news
resources :wikis
resources :phone_numbers, only: [:new, :create]
post 'phone_numbers/verify' => "phone_numbers#verify"
devise_for :profiles, controllers: { registrations: 'registrations'
}
resources :users, only: [:index]
end
Файл /etc/hosts
127.0.0.1 lochalhost
127.0.0.2 api.lochalhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Ответ
В файле /etc/hosts (или С:\System32\Drivers\etc\hosts в Windows) заведите два домена
127.0.0.1 lochalhost
127.0.0.2 api.lochalhost
Обратите внимание, что IP-адреса разные, если они будут одинаковые — придется для фронт-части и api использовать разные порты.
Организовать разделение роутов по этим двум частям можно, воспользовавшись ограничениями на уровне constraints в файле config/routes.rb:
Rails.application.routes.draw do
constraints subdomain: 'api' do
# Роуты для API
resource :clients
end
# Роуты для фронт-части
root to: 'home#index'
end
Приложение придется запустить на 0.0.0.0, чтобы перехватить обращения к 127.0.0.1 и 127.0.0.2. Или, если используются разные порты — запустить две копии одного и того же приложения на разных портах.
Комментариев нет:
Отправить комментарий