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"}

コードは 400 ではなく 200 です

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 に答える