API REST codes d'erreur de retour de la structure

Je suis en train d'écrire une API REST et je suis tombé sur un problème. Quelle est la meilleure façon de retourner les erreurs de validation.

Jusqu'à maintenant, j'ai été de retour les messages d'erreur sous-évaluées en général code d'erreur (disons mauvais demander par exemple)

{
    "status": 400,
    "error": {
        "code": 1, //General bad request code
        "message": [
                "The Key \"a\" is missing",
                "The Key \"b\" is missing",
                "The Key \"c\" is missing",
                "Incorrect Format for field \"y\""
         ]
    }

)

J'ai fait des recherches un peu plus à propos de comment faut-il une bonne API réponse devrait ressembler et j'ai pensé à l'une des options suivantes:

  1. Arrêter à la première erreur rencontrée et de renvoyer une réponse avec le code d'erreur spécifique

    {
       "status": 400, //Same as the HTTP header returned
       "error" {
            "code": 1, //Specific field validation error code
            "message": "Field \"x\" is missing from the array structure",
            "developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}",
            "more_info" => "www.api.com/help/errors/1"
        }
    )
  2. Analyser toutes les données de la demande et le retourner plusieurs erreurs de validation.

    {
      "status": 400,
      "error": {
        "code": 1 //General bad Request code
        "message": "Bad Request",
        "developer_message": "Field validation errors."
        "more_info": "www.api.com/help/errors/1",
        "error_details": {
                0: {
                        "code": 2 //Specific field validation error code
                        "message": "Field \"x\" is missing from the array structure",
                        "developer_message": "The request structure must contain the following fields {a,b,c{x,y,z}}",
                        "more_info": "www.api.com/help/errors/2"
                    },
    
                1: {
                        "code": 3 //Specific field validation error code
                        "message": "Incorrect Format for field \"y\"",
                        "developer_message": "The field \"y\" must be in the form of \"Y-m-d\"",
                        "more_info": "www.api.com/help/errors/3"
                   }
                       }
          }
      }

À mon avis, l'option 2 serait le droit chemin (il donne les informations les plus utiles pour les développeurs/utilisateurs finaux et de la charge du serveur peut être plus faible(moins de demandes/pas besoin de revalider les données valides/pas besoin de calculer la signature et l'authentification de l'utilisateur)), mais je suis errant quelles sont les meilleures pratiques, et si il y a une autre façon de traiter ce genre de problèmes.

Aussi je pense que l'option 1 est toujours valable si je reçois une seule erreur fatale dans le flux du script.(pas d'erreurs de validation)

Veuillez noter que le code est juste un simple tableau de sorte qu'il est plus facile à suivre. La réponse format JSON ou XML.

  • Je voudrais savoir si quelqu'un est allé #2 et peut-être avoir des améliorations sur elle alors j'ai ouvert un bounty.
  • Qu'est-ce que cette API utilisé pour et quel serait le but des messages d'erreur? Ces messages seront affichés à l'utilisateur final ou pas? Combien de demandes de faire attendre par seconde/minutes/jour? La réponse à votre question ne peut pas être précis sans cette info. Tu n'avais pas de réponses, car la question est trop large, cela dépend vraiment de l'utilisation de l'API.
InformationsquelleAutor Sekundes | 2013-08-27