2017-10-15 3 views
0

クライアントからPOSTリクエストを受け取る必要があります。クライアントには、laravel 5のRESTアプリケーションにPOSTリクエストが送られます。検証に関連するドキュメントに従うと、AJAXリクエストlaravelはリダイレクト応答を生成する代わりに、エラーのあるJSON応答を生成します(https://laravel.com/docs/5.5/validation#a-note-on-optional-fields)。休憩中のエラーメッセージをLaravelで返します

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8" /> 
     <meta http-equiv="refresh" content="0;url=http://laraveltest.com:8080/test/public" /> 

     <title>Redirecting to http://laraveltest.com:8080/test/public</title> 
    </head> 
    <body> 
     Redirecting to <a href="http://laraveltest.com:8080/test/public">http://laraveltest.com:8080/test/public</a>. 
    </body> 
</html> 

AdultoPostクラス*********************

:しかし、私はこの応答を取得していRESTクライアントから電話をかけるとき
class AdultoPost extends FormRequest 
{ 
    public function authorize() 
    { 
     return true; 
    } 

    public function rules() 
    { 
     return [ 
      'Profesion' => "max:50", 
      "EstadoCivil" => "required", 
      "FamiliaReconstituida" => "required", 
      "SolteroConHijo" => "required", 
      "Viudo" => "required", 
      "NoHijos" => "required" 
     ]; 
    } 
} 

AdultoController **************

public function post(AdultoPost $request, Adulto $adulto, Paciente $paciente, Persona $persona) 
     { 
      $persona = Persona::create($request->all()); 
      $adulto = Adulto::create($request->all()); 
      $paciente = Paciente::create($request->all()); 
return $adulto; 
    } 

私は要求のためのAdultoPostクラスを変更し、ポスト関数内で検証ルールを入れて、私はこのエラーを取得するにValidationExceptionをキャッチした場合msgstr "指定されたデータは無効です" msgid。それは私が望むものではありません。私はどのフィールドが無効で、なぜ、クライアントに送信したいのですか?

私はVSCODEのRESTのAPIプラグインからの要求を行うこと、およびREST APIテスト拡張子からクロムから、そして今、私はあなたからのリクエストを作るにはどうすればよいのテスト

POST http://laraveltest.com:8080/test/public/api/adulto 
Content-Type: application/json 
Accept: application/json 

{ 
    "FechaInicio":"2017-09-10", 
    "MotivoConsulta":"un motivo real", 
    "ComoConocio":"como conocio" 
} 
+0

あなたのREST APIにリクエストを作るのですかどのように指定してください。あなたがajaxをやっているなら、あなたのapiから送信された実際のデータ構造をあなたのコンソールでチェックすることができます。もしあなたがajaxを使用していないなら、htmlフォームとあなたの要求を処理する実際の関数コードでコードを提供してください。 – dexterb

答えて

1

を継続するPOSTMANをインストールしていますよクライアント。それは有効なJSONリクエストですので、正しいヘッダを設定してください:

Content-Type: application/json 
Accept: application/json 

カール例:

curl -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost/api 
+0

Accept:application/jsonが追加されましたが、まだ同じ問題が発生しています –

+1

あなたが質問を更新したとき、私は 'Content-type'しか見ることができません。私はちょうど私のAPIエンドポイントをテストし、それは 'Accept:application/json'を必要とします。 '' Content-type''は動作しません。 – Bostjan

+0

偉大な、ありがとう、私は夢中になっていた。私はコンテンツタイプを削除する必要があります!その後、Accept:application/jsonを追加します。同時に2つが動作していないためです。 –