Symfony 3 限制 Controller Action 以使用特定的内容类型

标签 symfony

可以在 SF3 中注释 Controller 操作以使用特定的“内容类型”吗?

我正在尝试放弃 '/api/post/{id}/xml' 路由黑客。

namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
class BlogApiController extends Controller
{
/**
 * @Route("/api/posts/{id}")
 * @Method({"GET","HEAD"})
 * some-magic-annotation-here
 */
public function showJson($id)
{
    // response in json
}

/**
 * @Route("/api/posts/{id}")
 * @Method({"GET","HEAD"})
 * some-magic-annotation-here
 */
public function showXml($id)
{
    // response in XML
}
}

最佳答案

official documentation您可以使用 条件 参数:

/**
 * @Route(
 *     "/api/posts/{id}",
 *     condition="request.headers.get('Content-Type') === 'application/json'"
 * )
 * @Method({"GET","HEAD"})
 */
public function showJson($id)
{
    ...

XML 也是一样。

条件 您必须使用 expression syntax

关于Symfony 3 限制 Controller Action 以使用特定的内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37348068/

相关文章:

symfony - 传递给 Controller ​​的参数必须是 ContainerInterface 的实例,给定 appDevDebugProjectContainer 的实例

php - Symfony2-特定捆绑软件的错误处理程序

api - Symfony2 FosRestBundle 根 api url

php - Doctrine 使用连接表返回结果不工作 Symfony2

php - Symfony 中允许空值但不允许空字符串

php - 如何使用 PHP 将图像返回到 https 请求

orm - Doctrine2 和更多字段的魔法查找器不起作用?

Symfony生产环境抛出500错误: Doctrine\ORM\ORMException 'Unknown Entity namespace alias ' DSBlogBundle'

arrays - 带有键 "path"的数组的键 ""不存在,而 dump 表示存在

php - 无法使用 Symfony 4.1 : could not find driver 创建数据库