目前正在关注Symfony 3.x的how to create Rest API教程。
我的问题是使用此代码时遇到getAction()
方法。
namespace SwipeBundle\Controller\Backend\API;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\FOSRestController;
use Symfony\Component\HttpFoundation\Response;
use FOS\RestBundle\View\View;
class UserController extends FOSRestController
{
/**
* @Rest\Get("/api/user")
*/
public function getAction() {
$restresult = $this->getDoctrine()
->getRepository('SwipeBundle:User')
->findAll();
if ($restresult) {
return new View("there are no users exist", Response::HTTP_NOT_FOUND);
}
return $restresult;
}
}
检查日志中的错误:
未捕获的PHP异常 Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException:" No 找到" GET / api / user""在 /home/swipecom/contactless/var/cache/prod/classes.php第4595行 {"例外":" [对象] (Symfony的\元器件\ HttpKernel \异常\ NotFoundHttpException(代码: 0):找不到\" GET / api / user \"在 /home/swipecom/contactless/var/cache/prod/classes.php:4595, Symfony的\分量\路由\异常\ ResourceNotFoundException(代码: 0):at /home/swipecom/contactless/var/cache/prod/appProdProjectContainerUrlMatcher.php:750)"} []
我检查并配置了FOSRest configuration and Nelmio
,但仍无效。
这是:
# Nelmio CORS Configuration
nelmio_cors:
defaults:
allow_credentials: false
allow_origin: ['*']
allow_headers: ['*']
allow_methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']
max_age: 3600
hosts: []
origin_regex: false
# FOSRest Configuration
fos_rest:
body_listener: true
format_listener:
rules:
- { path: '^/', priorities: ['text/html'], fallback_format: html, prefer_extension: false }
- { path: '^/api/', priorities: ['json'], fallback_format: json, prefer_extension: false }
param_fetcher_listener: true
view:
view_response_listener: 'force'
formats:
json: true
xml: true
yml: true
答案 0 :(得分:0)
使用path属性作为示例:
* @Rest\Get(path="/api/user")
而不是
* @Rest\Get("/api/user")
您可以使用控制台命令进行调试:
显示所有可用路线:
console debug:router
查看与您的路线匹配的人:
console router:match / api / user
NB:
如果问题仍然存在,请使用命令
进行检查console debug:router --show-controllers
并寻找你的控制器,看看会发生什么。例如,如果未列出您的控制器,请按文档here中所述检查路由配置。
希望这个帮助