首页 > 解决方案 > 对于 200 到 299 之间的 HTTP 状态,Response::isOk() 不应该返回 true 吗?

问题描述

我正在使用 Symfony 构建 REST API。我处于想要在事件中执行一些操作的情况kernel.terminate,但我想确保在执行此操作之前已成功处理请求。

为此,由于我使用 REST 约定并且应该在发生错误时返回适当的 HTTP 状态代码,因此我想检查响应 HTTP 状态。Symfony\Component\HttpFoundation\Response::isOk()如果 HTTP 状态在 200 到 299 之间,该方法似乎比手动检查更合适且更具可读性,但它true仅在 HTTP 状态等于 200 时返回。因为我在创建资源时返回 201 状态代码,所以我不能使用它为了那个原因。

在 Github 上打开问题之前,我想知道这种方法是否有理由不返回true其他成功的 HTTP 状态?

谢谢!

标签: symfonyhttp-response-codessymfony-http-foundation

解决方案


您可以使用对象中的isSuccessful()方法Response

/**
 * Is response successful?
 *
 * @return bool
 *
 * @final since version 3.2
 */
public function isSuccessful()
{
    return $this->statusCode >= 200 && $this->statusCode < 300;
}

推荐阅读