Я пытаюсь реализовать REST API с помощью symfony 4. Моя проблема в том, что я не могу достичь своих маршрутов для моих методов GET и POST. Каждый раз, когда я пытаюсь, я получаю ошибку 404.
Но когда я пытаюсь получить свои маршруты на symfony, у меня есть:
Name Method Scheme Host Path
app_statistics_poststatistics POST ANY ANY /api/stat
app_statistics_getstatistics GET ANY ANY /api/stat/{statId}
Итак, мои маршруты существуют, но я не могу до них добраться.
Я работаю над средой Windows с WAMP для работы локально.
Я уже пробовал свой api в среде с двумя окнами и в одной среде Linux с LAMP. Всегда получаю 404 Not Found.
Автор учебника сказал мне, что мой api работает на его компьютере, но у меня нет дополнительной информации о его среде. Итак, я ожидаю, что проблема возникнет из-за конфигурации моего виртуального хоста.
Вот мой виртуальный хост:
<VirtualHost *:80>
ServerName statroche.fr
ServerAlias www.statroche.fr
DocumentRoot "D:/other/symfony/testRoche/public"
<Directory "D:/other/symfony/testRoche/public">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
Важное примечание: у меня ничего нет в моей общедоступной папке, так как мне не нужна никакая страница, только API, мне все равно нужно помещать «общедоступный» в DocumentRoot и Directory?.
Я хотел бы получить доступ к своему API, а затем, например, для метода GET вернуть json. На самом деле я могу добраться до / моего проекта, но не могу добраться до других маршрутов.
Нет, я не вижу классическую страницу приветствия, но я могу подключиться к / с помощью +Indexes на моем виртуальном хосте




Даже если вы не хотите создавать «веб-сайт старого стиля» с Symfony, вы должны использовать index.php для начальной загрузки Symfony и сделать API доступным.
Я создал новый проект, чтобы попробовать index.php в моей общей папке. Теперь это ошибка, которую я не могу понять. Вот ошибка NotAcceptableHttpException - No matching accepted Response format could be determined, относящаяся к моему файлу fos_rest.yaml
Вместо
<Directory "D:/other/symfony/testRoche/public">
Укажите каталог apache Путь к основной папке вашего проекта Symfony следующим образом
<Directory "D:/other/symfony/testRoche">
Затем используйте файл .htaccess (поместите его в D:/other/symfony/testRoche/.htaccess, чтобы сделать общедоступный / index.php основной конечной точкой, если вы перейдете к http: // локальный: 80
Полная конфигурация apache
<VirtualHost *:80>
ServerName statroche.fr
ServerAlias www.statroche.fr
DocumentRoot "D:/other/symfony/testRoche/public"
<Directory "D:/other/symfony/testRoche/public">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
Файл .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Итак, если у вас нет
index.phpв папкеpublic, у вас нет точки входа для запуска Symfony - видите ли вы обычную страницу приветствия при доступе к/?