2017-10-15 7 views
0

Je dois recevoir une requête POST d'un client à mon application REST dans laravel 5. Je suis la documentation relative à la validation, il a dit que quand une demande AJAX laravel ne pas générer une réponse de redirection, à la place, il générera une réponse JSON avec des erreurs (https://laravel.com/docs/5.5/validation#a-note-on-optional-fields). Mais quand je fais l'appel d'un client REST Je reçois cette réponse:Retour des messages d'erreur sur appel de repos dans 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> 

classe AdultoPost *********************

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

Si je change AdultoPost classe pour la demande et mettre les règles de validation dans la fonction de poste et attraper un ValidationException je reçois cette erreur réponse "Les données fournies étaient invalides". Ce qui n'est pas ce que je veux. Je voudrais envoyer au client quels champs étaient invalides et pourquoi.

Je fais la demande du plugin API REST de VSCODE et de l'extension API REST TEST de chrome, et maintenant j'installer POSTMAN de poursuivre les essais

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

S'il vous plaît spécifier comment voulez-vous faire la demande à votre REPOS api. Si vous faites ajax, vous pouvez vérifier sur votre console la structure de données réelle envoyée par votre API, mais si vous n'utilisez pas ajax alors s'il vous plaît fournir votre code sur vos formulaires html et le code de fonction réel qui traite votre demande. – dexterb

Répondre

1

Comment voulez-vous faire la demande d'un client. Assurez-vous de définir les en-têtes corrects, il est donc une demande JSON valide:

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

exemple Curl:

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

Ajouté Accepter: application/json, mais toujours le même problème –

+1

Dans votre question mise à jour, je ne vois que 'Content-type'. Je viens de tester mon point de terminaison de l'api et il suffit de 'Accept: application/json'. ''Content-type' ne fonctionnera pas. – Bostjan

+0

Super, merci beaucoup, je devenais fou. Je dois supprimer le type de contenu !!! Ensuite, ajoutez Accept: application/json, car les deux en même temps ne fonctionnent pas !!! –