Symfony сделать вызов контроллера (REST API)


Хорошо, у меня есть среда с установленным symfony3, и я намерен сделать REST api, использовать в качестве веб-сервера NGINX и в качестве обратного прокси-сервера apache, т. е. на порту 80 у меня есть NGINX и на порту 8080 Apache.

я разработал тестовый проект с Symfony3.3, и если я запускаю команду на консоль, чтобы увидеть пути, я вижу следующее

introducir la descripción de la imagen aquí

контроллер у меня создан таким образом

<?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

Но я получаю код ошибки 404 introducir la descripción de la imagen aquí

Спасибо

Author: Oskar, 2017-11-17

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.

 2
Author: Dario PP, 2017-11-18 20:35:40