0
votes

J'essaie de prendre des commentaires d'un corps JSON et de vouloir valider si toutes les entrées sont correctes sinon à travers une exception

J'ai une classe dans laquelle une méthode est un calcul simple, accepte deux numéros et donner une addition. Je souhaite transmettre les numéros via API dans le format JSON et valider si les entrées sont des chiffres si pas par excéquation.

 input
 {
   num1="",
   num2=2
 }

 output 
 {
   error code:404
   message: "number cannot be null"
   ststus :"Fail"
 }


0 commentaires

4 Réponses :


0
votes

Vous pouvez faire quelque chose comme ceci:

    @ExceptionHandler(value= {Exception.class})
    public ResponseEntity<ApiResponse> handleAnyException(Exception ex,WebRequest request){
        ApiResponse response = new ApiResponse(ex);
        return new ResponseEntity<>(response,new HttpHeaders(),HttpStatus.INTERNAL_SERVER_ERROR);
    }


3 commentaires

Un INT ne sera jamais null, si vous lancez un entier à INT et que l'entier est null, il jette une exception de pointeur nulle dans votre méthode appel :)


La question était de prendre en compte JSON. Je ne trouve pas de réponse à la question de votre code. "Maintenant, je veux transmettre les chiffres via API au format JSON et valider si les entrées sont des chiffres sinon par excéquation."


Bonjour @vusal, j'ai ajouté la solution pour recevoir une demande JSON également. J'espère que maintenant la réponse est plus complète



0
votes

Vous pouvez le valider dans le contrôleur: xxx

il lancera nullpointexception l'entrée n'est pas entier.

Maintenant, vous devez saisir le Exaption et retourner votre objet xxx

juste modifier json à votre objet et statut au statut HTTP.


2 commentaires

La question était de prendre en compte JSON. Je ne trouve pas de réponse à la question de votre code. "Maintenant, je veux transmettre les chiffres via API au format JSON et valider si les entrées sont des chiffres sinon par excéquation."


Je l'explique, vous pouvez attraper l'exception et retourner un JSON (objet)



0
votes

Si vous souhaitez obtenir les paramètres d'entrée de JSON - alors vous devriez probablement (mais ce n'est pas obligatoire, il existe d'autres moyens d'obtenir un JSON à partir d'un client) Obtenez-les du corps des demandes HTTP, mais dans votre code - vous attendez-vous. Paramètres du chemin.

Vous devez créer une classe de modèle, par exemple: xxx

alors vous pouvez extraire un objet de Sumbodel , qui passait comme un corps de demande HTTP à l'aide du code suivant: xxx

et votre service ressemblerait à: xxx

si Le num1 ou num2 n'étaient pas des numéros - alors le JSONProcessingException sera lancé - et vous l'attraperez dans votre exceptionnelArdlerdvice .

Vous pouvez également appliquer certains Validation des haricots annotations ou créez-les sur mesure - pour SUBSTODEL Classe.

Si vous souhaitez obtenir JSON à partir de @pathvaria Ble alors vous devez créer personnalisé dataxier pour votre type.


0 commentaires

0
votes

une manière (non absolue, et elle pourrait différer de l'utilisation du cas d'utilisation) pour le faire est de créer une entité correspondante représentant le corps JSON attendu.

Dans mon exemple, je veux chercher tous les étudiants d'une classe spécifique (la classe littérale) qui restent dans une zone spécifiée. Et ce qui suit serait mon attendu: xxx

Ceci peut facilement être mappé sur une classe de demande correspondante, qui sera la suivante. xxx

dans ma classe de contrôleur, j'ajouterais une annotation @valid qui assurerait que toutes les entrées sont des types de données spécifiés ou non. xxx


0 commentaires