2016-09-05 11 views
2

これは非常に簡単な解決策であるに違いありませんが、GoogleやStackoverflowでこれを検索する方法がわからないので、これまで何も見つかりませんでした。Laravel:412エラーページを無視する

私は検証に421を失敗含むJSON文字列を返すルーメン内にシンプルなAPIのルートを書いた:

{ "code": 412, "status": "error", "data": "validation failed" } 

私は別のLaravelプロジェクトでそのルートを呼び出すために望んでいたが、その後、代わりにJSONの私は巨大なエラーページのことわざ取得APIから文字列:

Client error: POST http://www.serellyn.net/development/game_api/public/platforms

412 Precondition Failed応答の結果:

{"code":412,"status":"error","data":"validation failed"} 

Laravelが応答でエラーが発生しているので、これは正常な動作だと思います。しかし私がしたいことは、412エラーコードで私自身のjson文字列を受け取り、私のウェブページを使い続けることができるということです。

どうすればこの問題を解決できますか? ありがとうございます。

編集:コードを追加していません。私はGuzzleを使ってAPIを呼び出します。

$client = new Client(['base_uri' => 'http://www.serellyn.net/development/game_api/public/', 'auth' => array('dev', '<dev>2016')]); 
     $res = $client->request('POST', 'platforms', array('form_params' => ['name' => $request->name])); 
     if($res->getStatusCode() == 201) { 
      Session::flash('success', $request->name . ' successfully added'); 
     } else { 

     } 
     return redirect()->route('platforms.add.get'); 
+0

:(デフォルト値です)

あなたは次のように要求に'http_errors' => falseを配置する必要がありますか? –

+0

@AmirBar、申し訳ありません。私は最初にそれを追加したかったのですが、忘れました:) – Serellyn

+0

@AmirBar私の編集を確認してください:) – Serellyn

答えて

1

私は応答が正しいと思います。私がやることは、try-catchブロックのエラーをキャッチして、どのようにしたいかを続けさせることです。

+0

しかし、私は私のJSON、右で返すものを使用することはできませんか? APIが検証を行うので、検証が失敗した場合、検証に失敗し、APIで処理されてからJSONに返されることを知りたいと思います。 – Serellyn

+1

できます。エラーとともにエラーメッセージを送信する必要があります。 try-catchでExceptionからエラーメッセージを取得し、失敗したものを見つけることができます。 –

0

http_errors要求オプションがtrueに設定されている場合、問題は400レベルのエラーに対して例外がスローされます。あなたは、APIを呼び出すために使用したコードを投稿することができ

$client->request('POST', 'platforms', array('http_errors' => false,'form_params' => ['name' => $request->name])); if($res->getStatusCode() == 201) { 

http_errors docs

関連する問題