2016-09-02 7 views
2

Laravel 5.3でRESTful APIを開発していますので、いくつかの機能をテストして、コントローラでリクエストしています。私がする必要があることは、データベースにフィールドを追加する前にユーザーが送信するリクエストを検証することです。カスタムFormRequestを使用して検証します。Laravelで無効になったホームページへのリダイレクトを防止します

私のAPIをPostmanでテストして、無効なリクエストを送信したときに、応答が私をホームページにリダイレクトしました。ドキュメントを読んだ後、私は、検証が失敗した場合、リダイレクト応答が以前の場所に戻って ユーザーを送信するために生成される次の文に

を見つけました。エラーは、セッションにも表示されるように、 にフラッシュされます。リクエストが AJAXリクエストの場合、ステータスコード422のHTTPレスポンスは エラーのJSON表現を含む が返されます。

どうすればこの問題を防ぐことができますか?または、郵便配達員にAJAXモードがありますか?なにか提案を?

答えて

2

。 Laravelは、Json &の通常ページをサポートするように作られています。 postmanで設定を変更して enter image description here

Laravelは;-)

SMARTで以下のように application/jsonAcceptを設定してください
3

カスタムを期待通りに私のAPIレスポンスので、AJAX要求を行います。 withinはresponse()というリダイレクトを実行する関数です。カスタムFormRequest内でこの関数をオーバーライドするだけで、無効な検証にどのように応答するかを変更できます。また、これは任意の関数をオーバーライドすることなく達成することができる


namespace App\Http\Requests; 

use Illuminate\Foundation\Http\FormRequest; 
use Illuminate\Http\JsonResponse; 

class CustomFormRequest extends FormRequest 
{ 
    /** 
    * Custom Failed Response 
    * 
    * Overrides the Illuminate\Foundation\Http\FormRequest 
    * response function to stop it from auto redirecting 
    * and applies a API custom response format. 
    * 
    * @param array $errors 
    * @return JsonResponse 
    */ 
    public function response(array $errors) { 

     // Put whatever response you want here. 
     return new JsonResponse([ 
      'status' => '422', 
      'errors' => $errors, 
     ], 422); 
    } 
} 
関連する問題