You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HttpFoundation Request类时,如何检查API响应的HTTP状态码?

检查API B响应状态码的实现方式

你搞混了Request和Response的职责——Request只是用来构造要发送的请求,响应的状态码是在Response对象里获取的,HttpFoundation的Request本身不负责处理响应状态。

具体实现步骤很简单:

  • 发送构造好的请求,拿到API B返回的Response实例
  • 调用Response的getStatusCode()方法获取状态码,判断是否为200

给你一段实际代码示例(用Symfony HttpClient实现,这是和HttpFoundation搭配最常用的组件):

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\HttpClient\HttpClientInterface;

public function proxyApiRequest(Request $apiARequest, HttpClientInterface $client)
{
    // 构造发给API B的请求
    $apiBRequest = Request::create(
        'https://api-b.example.com/target-endpoint',
        $apiARequest->getMethod(),
        $apiARequest->request->all(),
        $apiARequest->cookies->all(),
        $apiARequest->files->all(),
        $apiARequest->server->all()
    );

    // 发送请求到API B
    $apiBResponse = $client->request(
        $apiBRequest->getMethod(),
        $apiBRequest->getUri(),
        [
            'headers' => $apiBRequest->headers->all(),
            'body' => $apiBRequest->getContent(),
        ]
    );

    // 获取并检查状态码
    $statusCode = $apiBResponse->getStatusCode();
    if ($statusCode !== 200) {
        // 非200状态的处理逻辑,比如返回错误给API A
        return new Response(
            sprintf('API B request failed with status code: %d', $statusCode),
            503
        );
    }

    // 状态正常,把API B的响应原封不动返回给API A
    return new Response(
        $apiBResponse->getContent(),
        200,
        $apiBResponse->getHeaders()
    );
}

如果你的项目用的是其他HTTP客户端(比如Guzzle),逻辑也是一样的:只要拿到响应对象,调用对应的状态码方法(比如Guzzle的getStatusCode())就行,核心就是状态码是响应的属性,和请求类无关。

内容的提问来源于stack exchange,提问作者FatGuyLaughing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:45:43