Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Custom API Rails

Здравствуйте, как я могу в 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. Или, если используются разные порты — запустить две копии одного и того же приложения на разных портах.

Комментариев нет:

Отправить комментарий