Symfony сделать вызов контроллера (REST API)
Хорошо, у меня есть среда с установленным symfony3, и я намерен сделать REST api, использовать в качестве веб-сервера NGINX и в качестве обратного прокси-сервера apache, т. е. на порту 80 у меня есть NGINX и на порту 8080 Apache.
я разработал тестовый проект с Symfony3.3, и если я запускаю команду на консоль, чтобы увидеть пути, я вижу следующее
контроллер у меня создан таким образом
<?php
namespace AppBundle\Controller\Api\v1;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\BrowserKit\Response;
class UsuariosController extends Controller
{
/**
* @Route("/api/v1/nombre")
* @Method("POST")
*/
public function nombreAction(Request $request)
{
$nombre = $request->get('nombre');
return new response('its ok',201);
}
}
файл пути в формате yml это
app:
resource: '@AppBundle/Controller/'
type: annotation
oneup_uploader:
resource: .
type: uploader
теперь проблема у меня возникает при попытке запустить эту функцию контроллера с помощью метода POST для этого с помощью POSTMAN я делаю вызов http://127.0.0.1:8080/portalX/api/v1/nombre?nombre=222
Спасибо
1 answers
Запрос, который вы делаете, выглядит так, как будто это производственная среда, обычно /app_dev.php это для развития среды и /app.php для производства. Если вы пропустите передний контроллер поведение по умолчанию в . htaccess должно перейти в среду PROD.
Пути в Symfony кэшируются в производстве, поэтому, если вы добавили путь, но не очистили кэш, он будет недоступен.
Чтобы проверить, доступен ли путь в PROD, вы можете сделать "php bin / console debug :router --env=prod", однако во время разработки гораздо проще использовать http://127.0.0.1:8080/portalX/app_dev.php/api/v1/nombre?nombre=222
Что касается API, я рекомендую использовать API Platform - это дистрибутив Symfony со всем необходимым для готового api.