2017-01-30 4 views
0

Requestクラス404号に必要なのparam値が渡されない

class LoginRequest extends Request 
{ 

    public function authorize() { 
     return true; 
    } 

    public function rules() { 
     return [ 
      'EmailAddress' => 'required', 
      'Password'  => 'required', 
     ]; 
    } 

    public function messages() { 
     return [ 
      "EmailAddress.required" => trans("login.RequiredEmailAddress"), 
      "Password.required"  => trans("login.RequiredPassword") 
     ]; 
    } 
} 

ルート

Route::post('/AuthenticateUser', 
    array(
     'uses' => 'API\Login\[email protected]', 
     'as' => 'AuthenticateUser' 
    ) 
); 

コントローラのアクションメソッド私は、コントローラを持って

、Iリクエストクラスが入力pの検証のみを行ったarameters。以下のアクションメソッド

public function AuthenticateUser(LoginRequest $request) { 
    dd("Hello"); 
} 

のURL

localhost:85/Laravel/public/api/v1/AuthenticateUser 

私はURLをテストするためにポストマンChromeの拡張機能を使用しています。リクエストクラスでは、メールアドレスとパスワードの両方が必須パラメータであることがわかりました。

私は両方のパラメータ値を渡します。問題はなく、すべてが機能します。メールアドレスの値を空のままにすると... 404エラーが表示され、ここでスクリーンショットが表示されます。

電子メールアドレスが指定されていない場合、404エラーを取り除くために何か不足していますか?私はメールアドレスとパスワードの両方を渡すとき

以下enter image description here

が動作状態である電子メールアドレスを入力するために、エラーメッセージを期待していますが、ルートの取り扱いに直接確認されているので、それがある

enter image description here

+0

URIを間違って入力している可能性があります。 - 'php artisan route:list'と入力して既存のURIをすべて表示してみてください。なぜあなたはURIの 'Laravel/public'部分も含めていますか?一般的にそれを追加する必要はなく、あなたのルートファイルに 'api/v1'という接頭辞を定義していますか? –

+0

私はすでに電子メールアドレスとパスワードの両方を渡すとうまくいくという質問に言及しました。 – Pankaj

+0

情報が不足しています。あなたは両方のフィールドを提供しても動作すると言いましたが、 'dd( 'hello')'の結果を見るべきですが、代わりにJSONを戻しています。あなたが404を手に入れようとしているのは、あなたのアプリのどこかで、あなたのデータベースの空のメールアドレスを探していて何も見つけられていないからです。あなたは問題を解決するためにJSONを出力している正しいコントローラを見つける必要があります。 –

答えて

0

最後に、以下のようなリクエストクラスを変更して動作させました。

class LoginRequest extends Request 
{ 

    public function wantsJson() { 
     return true; 
    } 

    public function authorize() { 
     return true; 
    } 

    public function rules() { 
     return [ 
      'EmailAddress' => 'required', 
      'Password'  => 'required', 
     ]; 
    } 

    public function messages() { 
     return [ 
      "EmailAddress.required" => trans("login.RequiredEmailAddress"), 
      "Password.required"  => trans("login.RequiredPassword") 
     ]; 
    } 
} 

コードの下に追加しました。

public function wantsJson() { 
    return true; 
} 
-2

NotFoundExceptionを介して一致しません。リクエストをコントローラにそのまま渡す必要があります。

$this->validate($request, [ 
      'EmailAddress' => 'required|email', 
      'Password'  => 'required', 
     ]); 
+0

これは、検証が失敗した場合、Laravelが422エラーを返し、電子メールアドレスとパスワードの両方を渡した場合に404​​ –

+0

が返されないためです。私は電子メールアドレスの値を空のままにすると動作しません。問題のスクリーンショットを確認してください – Pankaj

+0

検証に失敗した場合は422を返しますが、ルート上で検証されていない場合は、状態404のNotFoundExceptionとのルートマッチングです!投票のおかげでありがたいですが、テストするのが良いでしょう。投票は@PhilCross –

関連する問題