在 Symfony 6 中定义异常的 HTTP 状态代码

在 Symfony 6 中定义异常的 HTTP 状态代码

默认情况下,如果一个应用程序抛出一个异常,Symfony 会将该异常转化为一个带有 500 HTTP 状态码的错误,除非异常实现了HttpExceptionInterface或扩展了一个实现该接口的类(例如HttpException)。

本教程展示了如何在 Symfony 6 应用程序中定义异常的 HTTP 状态代码。

假设我们有一个InvalidArgumentException由 Validator 组件提供的控制器。

src/Controller/TestController.php

<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Exception\InvalidArgumentException;

class TestController
{
    #[Route('/')]
    public function index(): Response
    {
        throw new InvalidArgumentException();
    }
}

如果我们尝试打开该控制器的关联 URL,我们将收到 500 Internal Server Error。

Symfony 允许使用选项定义异常的 HTTP 状态代码framework.exceptions

config/packages/exceptions.yaml

framework:
    exceptions:
        Symfony\Component\Validator\Exception\InvalidArgumentException:
            status_code: 422

现在异常将变成状态代码为 422 Unprocessable Content 的错误。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论