【发布时间】:2017-06-26 12:00:16
【问题描述】:
我终于在 Symfony3 中获得了我的第一个 API,它实际上可以工作。
到目前为止非常好,但是当我尝试使用YML 配置而不是annotation 进行路由时出现问题。它让我发疯,因为它似乎可以工作,事实上,当我有机会获得控制器名称时,它会给我一个内部服务器错误,但是当一切都“正确”时,它似乎无法在我的控制器中找到该方法。
所以这是我的代码:
常规路由设置
#config/routing.yml
user_routes:
resource: "@AppBundle/Resources/config/user_routes.yml"
type: rest
捆绑路由设置
#AppBundle/Resources/config/user_routes.yml
user:
type: rest
resource: AppBundle\Controller\UserController
最后是我的控制器:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\FOSRestController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\View\View;
use AppBundle\Entity\User;
class UserController extends FOSRestController
{
// /**
// * @Rest\Get("/user")
// */
public function getAction()
{
$restresult = $this->getDoctrine()->getRepository('AppBundle:User')->findAll();
if ($restresult === null) {
return new View("there are no users exist", Response::HTTP_NOT_FOUND);
}
return $restresult;
}
}
使用annotation 效果很好,每个人都很高兴,但是当我使用这些设置时,我得到一个 404。我尝试根据 Symfony 官方文档添加prefix: /api 和name_prefix: api_,但它没有用。
我还尝试添加defaults: { _controller: AppBundle:Controller:UserController:get,但错误 404 总是在拐角处。
正如我所说,如果我在 user_routes.yml 中更改控制器类的名称,我会收到 500 错误,因此似乎正在读取路由,但很明显这里缺少某些东西,我无法找到它官方文档或其他地方。
【问题讨论】:
标签: symfony routing fosrestbundle symfony-3.3