Вот контроллер:
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)". В чем дело? Мне надо чтобы они были по одному пути, но с разными методами.
Get
, Post
и прочие являются наследниками Route
.
Указывать "name"
для @Route
необязательно, он генерируется автоматически.
В аннотации ошибка, достаточно удалить name
или задать его уникальные значения для методов - всё заработает. Здесь описано как это устроено.
Не знаю как в 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах
Подскажите пожалуйста, есть ли возможность установить произвольный (а не только localhost) адрес, который будет приниматься в