Но прежде чем мы начнем, давайте кратко вспомним, что такое изобретательный маршрут. В веб-разработке изобретательные маршруты обычно используются для сопоставления команд HTTP с действиями контроллера в RESTful API. Эти маршруты обычно имеют традиционную структуру, которая упрощает управление и организацию конечных точек API.
Метод 1: определение маршрута вручную
Самый простой способ добавить еще один маршрут к ресурсному маршруту — вручную определить его в конфигурации маршрутизации. Предположим, у вас есть продуманный маршрут для публикации в блоге, который уже включает маршруты для создания, чтения, обновления и удаления публикаций. Чтобы добавить маршрут для лайка публикации, вы можете просто добавить следующую строку в конфигурацию вашего маршрута:
# routes.rb (Ruby on Rails)
resources :posts do
post 'like', on: :member
end
Это добавит новый маршрут like, который соответствует действию likeв вашем PostsController. При необходимости вы можете аналогичным образом добавить маршруты для других действий.
Метод 2: маршрут вложенного ресурса
Другой подход — вложить дополнительный маршрут в существующий маршрут ресурса. Это полезно, когда вам нужно добавить маршрут, связанный с определенным вложенным ресурсом. Допустим, у вас есть изобретательный маршрут для публикаций в блоге, и вы хотите добавить маршрут для комментирования публикации. Вот как этого можно добиться:
# routes.rb (Ruby on Rails)
resources :posts do
resources :comments, only: [:create]
end
Это создаст вложенный маршрут, который соответствует действию createв CommentsController, и маршрут будет включать идентификатор сообщения как часть URL-адреса.
Метод 3: участники и маршруты сбора
В ресурсных маршрутах параметры memberи collectionпозволяют определять маршруты, которые работают с отдельными ресурсами или всей коллекцией соответственно. Понимание разницы между этими двумя вариантами может оказаться полезным при добавлении дополнительных маршрутов.
Маршрут memberработает с конкретным ресурсом и включает идентификатор ресурса в URL-адрес. С другой стороны, маршрут collectionработает со всей коллекцией и не включает конкретный идентификатор ресурса. Вы можете использовать эти параметры для добавления маршрутов для различных сценариев.
Метод 4. Пользовательские имена маршрутов
При добавлении другого маршрута вы можете дать ему собственное имя для ясности и единообразия. Пользовательские имена маршрутов могут сделать ваш код более читабельным и удобным в сопровождении. Вот пример:
# routes.rb (Ruby on Rails)
resources :posts do
post 'like', on: :member, as: 'like_post'
end
Использование as: 'like_post'позволяет ссылаться на этот маршрут по специальному имени like_post_pathв вашем коде.
Вот и все! Теперь вы узнали несколько способов добавить еще один маршрут к вашему изобретательному маршруту. Не стесняйтесь выбирать метод, который лучше всего соответствует вашим требованиям и стилю кодирования.