Как сделать так, чтобы приложение API было похоже на url / что-то? Type = - PullRequest
0 голосов
/ 19 октября 2018

Я работаю над Rails 5.2 API, и меня немного смущает правильная маршрутизация.

Когда я вызываю свой API, я пишу: localhost:3001/?type=arrival

что я хотел бы написать: localhost:3001/flights?type=arrival

Но я не знаю, что мне следует делатьизменить, а также, если это может быть правильным, как хорошая практика, делающая API.

Или должно быть что-то вроде: URL/api/v1/flights?type=...

Я не уверен, что будет лучше и как изменить.

Мой routes.rb:

root to: "api/v1/flights#index"
namespace :api, defaults: { format: :json }, constraints: { subdomain: 'api' }, path: '/api' do
  namespace :v1 do
    resources :flights, only: [:index, :destroy_all]
  end
end

1 Ответ

0 голосов
/ 19 октября 2018

При настройке API вы редко хотите иметь как ограничение поддоменов, так и /api в пути:

http://api.example.com/api/v1/flights

Кажется глупым.Я имею в виду, что еще у вас есть на поддомене API?

Так что либо идти с путем:

namespace :api, defaults: { format: :json } do
  namespace :v1 do
    resources :flights, only: [:index]
  end
end

Или поддомен:

namespace :api, defaults: { format: :json }, constraints: { subdomain: 'api' }, path: nil do
  namespace :v1 do
    resources :flights, only: [:index]
  end
end

Чтобы добавить дополнительныеОТПРАВЛЯЯ глаголы в коллекцию (например: destroy_all), вы передаете блок в resources:

resources :flights, only: [:index] do
  delete '/', action: :destroy_all, on: :collection
end
...