2016-03-13 1 views
0

Supposons que nous avons un serveur API Web ASP.Net et toutes les erreurs que nous revenons aux clients comprennent ces propriétés:meilleur moyen pour le stockage (non journalisation) des messages d'erreur REST dans l'API Web ASP.NET

  • erreur code (REST code d'erreur personnalisé)
  • état HTTP (HTTP code standard)
  • message d'erreur (erreur d'été)
  • erreur Détail (en option)

Je voudrais simplement savoir la meilleure façon de stocker ces messages d'erreur (pas de journalisation), afin de récupérer plus tard et le renvoyer aux clients (via JSON) en cas d'exception. Plusieurs réponses proposées:

  • fichier de ressources (.resx)
  • base de données
  • à l'intérieur du code
+1

Qu'entendez-vous par "stockage"? vous devez enregistrer les erreurs, vous devez les exporter vers les clients. Voulez-vous dire de mettre en place un message d'erreur et de les chercher pour différentes occasions? – trailmax

+0

@trailmax Mise à jour ma question. –

+0

utiliser elmah ------------ –

Répondre

0

Voulez-vous dire comment les connecter? Les deux principales façons d'y parvenir sont:

  1. Log fichier CSV
  2. Connectez-vous à la base de données

Ceux-ci sont considérées comme les meilleures pratiques. Les avantages du CSV, c'est qu'ils sont bon marché. Contre pour CSV est qu'ils peuvent être difficiles à interroger/filtrer après, surtout si vous vous connectez à séparer les fichiers.

Dans la base de données, les avantages sont la capacité de filtrage, mais c'est parce que c'est cher.

+0

Non. Je voulais dire où stocker les informations sur les erreurs. Ne pas les enregistrer après qu'ils sont arrivés. –

+0

@BehzadBahmanyar Vous devrez reformuler votre question - qu'entendez-vous par "magasin" alors? Dans la 'réponse' de l'API aux 'requêtes' des clients? – EdSF

+0

disons que nous voulons retourner à un client une erreur comme ceci: code d'erreur: 1023, message: identifiant de ressource invalide, détail: impossible de trouver le livre avec l'ID {0}. où devrais-je obtenir des informations ci-dessus? ce qui nous amène à la première question où l'ai-je stocké? Je veux dire dois-je stocker en db, fichier .resx ou une autre option de stockage? –

1

Si vous avez pris soin de vous connecter correctement, les stocker dans le code est toujours plus rapide que d'aller chercher dans n'importe quel magasin de données.

Certains avantages du stockage dans resx et des modèles pour les codes d'erreur personnalisés dans le code.

  1. Les chaînes d'erreur peuvent être dans le resx, l'avantage est qu'elles peuvent être localisées et seront plus rapides à extraire par rapport à une recherche db.
  2. Dans le monde de l'API généralement, vous allez retourner un code HttpStatus pour les échecs ou le succès, l'exemple que vous avez mentionné sera quelque chose juste une partie de la réponse d'erreur. Cette réponse d'erreur est basée sur la logique du code et par conséquent ErrorCode à renvoyer au client peut être une constantes mappées à httpstatuscode concaténé avec des chaînes d'erreur.
+0

D'abord, j'inclus le code de statut HTTP afin que le développeur puisse le "voir" sans avoir à analyser l'en-tête de la réponse. Les deuxièmes fichiers .resx ne sont que des colonnes limitées Nom, Valeur et Commentaire qui ne sont pas suffisantes pour mes propriétés de modèle de message. –