Я его добавил, чтобы удалять постер автора (картинка).
Потом решил зайти через get запрос, чтобы посмотреть, а что же будет. И мне сгенерировалось сообщение из заголовка. Так-то все верно, такого роута действительно нет. Но это же не нормально, да? Мне следовало использовать другой метод или что?
kafkiansky, но я же определяю роут для post-запроса. C фига ли считается, что я хочу что-то получить через get? По факту я ведь и в режиме продакшена получу ошибку. Поэтому тут либо я неверно все организовал, либо хз.
ildar-meyker, статус ошибки будет 405, а не 404 - все верно, на проде будет отдаваться стандартный текст для юзера емнип. Если юзер сам лезет в урлы и пытается гетом дергать эндпоинт, который предназначен для метода пост - то это его проблемы
ildar-meyker, нет, эндпоинт вида /entity/entity-id не обязан строго соответствовать существованию модели entity.
Так, как у вас сейчас, можно переделать роутинг с POST authors/{author}/delete-poster
на DELETE authors/{author}/posters/{poster-id}
перед этим допилив урл GET authors/{author}/posters, чтобы видеть список постеров у автора
Иван Шумов, у нас так делали, когда управляли связанной сущностью (как постеры у автора). Думаете стОит управлять связанной сущностью отдельными эндпоинтами на уровне апи? Я просто не встречала таких примеров в реальных публичных апи
Daria Motorina, да. По тому что роутинг это абстрактная величина. Мы можем написать там что угодно, но чем больше мы в него зависимостей вставляем тем больше нам надо знать про объект. Например в том что я вижу нам надо знать и владельца постера и сам постер. Вопрос - зачем? Отвечаю сразу - никому это не сдалось.
Всё верно метод GET только для получения данных, а POST(PUT, DELETE и т.д.) для изменения данных. Это важно с точки зрения безопасности, к тому же POST надо подпирать CSRF токеном.