PHP curl returns 代码 200,即使该方法抛出代码 400 的异常

PHP curl returns code 200 even though the method throws an exception with code 400

我已经完成了 API,现在我正在尝试使用 curl 方法进行调用,我正在尝试输入错误数据以获取错误并检查是否一切正常.但我不明白的是为什么 curl 在输入数据错误时调用 returns 代码 200 并抛出代码 400 的异常。

那是我的 curl 电话:

public function test() {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL,"http://127.0.0.1/mysite/public/rest/createUser/");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, [
        "email" => "some.email",
        "address" => "elm street",
        "telephone" => "123123123",
    ]);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $server_output = curl_exec ($ch);

    curl_close ($ch);

    var_dump($server_output);

}

在这种情况下,电子邮件无效,并且在调用 createUser 方法并显示时抛出异常。

{"error":"The email asd2123123 is invalid"}

代码是 200 而不是 400

如果我调用 URL 而我不使用 curl 方法,它 returns 代码 400

另外,我正在使用 Postman 进行调用,如果我直接调用 createUser 并且输入了无效的电子邮件,它 returns 代码为 400。

以这种方式尝试您的代码:

public function test() {

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL,"http://127.0.0.1/mysite/public/rest/createUser/");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, [
        "email" => "some.email",
        "address" => "elm street",
        "telephone" => "123123123",
    ]);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);    // we want headers
    $server_output = curl_exec ($ch);

    curl_close ($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    echo 'HTTP code: ' . $httpcode;
    var_dump($server_output);
}

HTTP代码还是200吗?