Php Symfony控制器:重定向、路由还是其他?
因此,我正在构建一个Symfony web应用程序 我有一个简单的控制器(Php Symfony控制器:重定向、路由还是其他?,php,symfony,Php,Symfony,因此,我正在构建一个Symfony web应用程序 我有一个简单的控制器(DefaultController.php),如下所示: <?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\H
DefaultController.php
),如下所示:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller
{
/**
* @Route("/", name="default")
*/
public function defaultAction(){
return $this->render('default/hello.html.twig', array(
'name' => "hello"
));
}
}
从建筑的角度来看,我这样做对吗?关于如何在Symfony中实现这一点,有人有什么建议吗?您的思路是正确的。但如果您希望支持多种请求和响应格式(如JSON、XML),最好使用
它可以处理内容协商、实体序列化(FOSRest捆绑包使用它),还可以让您构建RESTful路由。您走的是正确的道路。但如果您希望支持多种请求和响应格式(如JSON、XML),最好使用
它可以处理内容协商、实体序列化(FOSRest Bundle使用它)并让您构建RESTful路由。如果您定义如下路由:
/**
* @Route("/getUser", name="getUser")
*/
public function getUser(){
//
}
然后此操作的URL将为http://eamorr.com/getUser
。正如您所看到的,没有/api
部分,这是因为您在任何地方都没有提到它
对于这种情况,您有两种解决方案
首先定义完整的路由,如
/**
* @Route("/api/getUser", name="getUser")
*/
public function getUser(){
//
}
第二:由于您希望所有APIController
操作都包含此/api
部分,因此可以通过为整个类定义“基本”路由来为所有路由定义前缀
/**
* @Route("/api", name="getUser")
*/
class APIController extends Controller
然后你就可以让你的行动路线保持原样
更多信息:如果您定义以下路线:
/**
* @Route("/getUser", name="getUser")
*/
public function getUser(){
//
}
然后此操作的URL将为http://eamorr.com/getUser
。正如您所看到的,没有/api
部分,这是因为您在任何地方都没有提到它
对于这种情况,您有两种解决方案
首先定义完整的路由,如
/**
* @Route("/api/getUser", name="getUser")
*/
public function getUser(){
//
}
第二:由于您希望所有APIController
操作都包含此/api
部分,因此可以通过为整个类定义“基本”路由来为所有路由定义前缀
/**
* @Route("/api", name="getUser")
*/
class APIController extends Controller
然后你就可以让你的行动路线保持原样
更多信息:OK。伟大的谢谢你的洞察力!好啊伟大的谢谢你的洞察力!非常有用。谢谢我考虑过FOSRestBundle,但我将只注释我的函数,并使用apidoc.js生成文档和沙盒。事实上,在决定是否真的适合我之前,我将在拉威尔尝试所有这些。我也需要oauth…我可以推荐。有关api文档,请参阅非常有用的。谢谢我考虑过FOSRestBundle,但我将只注释我的函数,并使用apidoc.js生成文档和沙盒。事实上,在决定是否真的适合我之前,我将在拉威尔尝试所有这些。我也需要oauth…我可以推荐。有关api文档,请参阅非常有用的