0

我已经完成了一个 API,现在我正在尝试使用该curl方法进行调用,并且我正在尝试输入错误数据以获取错误并检查一切是否正常。但我不明白的是,为什么curl当输入数据错误时调用会返回代码 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它返回代码 400 的方法

此外,我正在使用 Postman 拨打电话,如果我直接拨打电话createUser并输入无效的电子邮件,它会返回代码 400。

4

1 回答 1

1

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

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 吗?

于 2016-03-27T10:16:57.027 回答