Почему GET не работает одновременно с POST?

118
30 января 2021, 13:40

Вот контроллер:

use FOS\RestBundle\Controller\Annotations as Rest;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
class AppsController extends AbstractController
{
    /**
     * @Rest\Get("/apps", name="apps")
     */
    public function listAction(Request $request)
    {
    }
    /**
     * @Rest\Post("/apps", name="apps")
     */
    public function postAction(Request $request)
    {
    }
}

Пока не было postAction все работало нормально, но когда я его добавил стал работать только postAction, а на listAction ругается "No route found for "GET /apps": Method Not Allowed (Allow: POST)". В чем дело? Мне надо чтобы они были по одному пути, но с разными методами.

Answer 1

Get, Post и прочие являются наследниками Route. Указывать "name" для @Route необязательно, он генерируется автоматически.

В аннотации ошибка, достаточно удалить name или задать его уникальные значения для методов - всё заработает. Здесь описано как это устроено.

Answer 2

Не знаю как в symfony устроены маршруты, но попробую на примере laravel Объяснить.

В нём создаются маршруты по типу:

Route::get('/apps', 'AppsController@listAction');
Route::post('/apps', 'AppsController@postAction');

Тем самым когда Вы обращаетесь по get запросу вызывается первый метод, а по post второй! по uri /apps

Указывая @Rest\Post("/apps", name="apps") у вас в комментариях, вы определяете тип обращения! Ошибка которая у Вас возникла сообщает о том что:

Route::get(/apps, 'AppsController@listAction'); -- Вы не создали данный маршрут
Route::post(/apps, 'AppsController@postAction'); -- а этот создали

Решение. В файле указания маршрутов необходимо создать маршрут для GET

READ ALSO
Что не так с регуляркой

Что не так с регуляркой

Не работает регурялка в php может кто-то подскажет почему?:

118
Open-source проекты на Java, с наилучшей архитектурой [закрыт]

Open-source проекты на Java, с наилучшей архитектурой [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

110
Проблемы типизации

Проблемы типизации

Итак, у меня есть сущности, несколько штук

112
ServerSocket Java Установка любого адреса

ServerSocket Java Установка любого адреса

Подскажите пожалуйста, есть ли возможность установить произвольный (а не только localhost) адрес, который будет приниматься в

85