При разрешении одинаково доступных маршрутов я понимаю, что порядок маршрутов имеет значение.
Где я запутался, почему при отправке запроса DELETE
на этот маршрут он совпадает с маршрутом GET
, вместо того, чтобы игнорировать его и пробовать подходящий метод под ним?
/**
* @Route("/{game}")
* @Method({"GET"})
*/
public function single(Request $request, GameSerializer $gameSerializer, Game $game) {
$out = $gameSerializer->bind($game);
return new JsonResponse($out);
}
/**
* @Route("/{game}")
* @Method({"DELETE"})
*/
public function remove(Request $request, Game $game) {
$em = $this->getDoctrine()->getManager();
$em->remove($game);
$em->flush();
return new JsonResponse([], 200);
}
Полное раскрытие
Я понимаю , почему соответствует самому верхнему маршруту на основе строго шаблонов
Я не понимаю, почему метод доступа игнорируется при этом
Итак, просто для проверки я настроил перемещение по маршруту DELETE
выше GET
маршрута
/**
* @Route("/{game}")
* @Method({"DELETE"})
*/
public function remove(Request $request, Game $game) {
$em = $this->getDoctrine()->getManager();
$em->remove($game);
$em->flush();
return new JsonResponse([], 200);
}
/**
* @Route("/{game}")
* @Method({"GET"})
*/
public function single(Request $request, GameSerializer $gameSerializer, Game $game) {
$out = $gameSerializer->bind($game);
return new JsonResponse($out);
}
только .. чтобы это произошло, когда я попытался получить существующую не тестовую запись, выполнив базовую операцию просмотра URL в браузере (так, GET
)
и, боже, он когда-нибудь удалял эту запись?
Почему метод доступа игнорируется?