Enviorment: Java, Jersey avec Jackson, Tomcat.Service de repos JSON Verification
J'ai un service de repos prenant l'entrée JSON du client. Je veux vérifier l'entrée, si son JSON ou pas et ensuite JSON puis la clé dans l'entrée JSON est comme prévu ou non. Si oui alors il devrait produire une requête HTTP 400-Bad.
Pour exemple-
// REST SERVICE @POST @Path("login") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response login(Credentials login, @Context HttpServletRequest httpRequest) { if (login == null) // return sendBadRequest(HTTP 400); String userName = (String) login.getUsername(); String passWord = (String) login.getPassword(); if (userName == null) // return sendBadRequest(HTTP 400); else if (passWord == null) // return sendBadRequest(HTTP 400); ..... } // Credentials.java @JsonIgnoreProperties(ignoreUnknown=true) public class Credentials { private String username; private String password; // Getters and setters... }
Par exemple - entrée non JSON comme
{"key" : "val"devrait produire HTTP 400. Outre l'entrée avec des valeurs non appropriées comme
{"usernames" : "abc", "passwords" : "abc"}devrait produire HTTP 400.
Mon code fonctionne bien pour le cas 2 mentionné mais je m'attendais à ce qu'il fonctionne aussi pour le cas 1. quand l'entrée non-json est là, je m'attendais à ce qu'elle mette à zéro l'objet Credential et que je puisse l'objet nul dans 'if' pour renvoyer le HTTP 400. Mais ce n'était pas le cas. Y a-t-il quelque chose que le cadre de repos prévoit pour ce cas?
Je sais peu GSON Je n'utilise pas ici. Je voulais utiliser le framework Java Jersey pour gérer l'exception et pas mon code où je compare les chaînes. Merci votre suggestion mais ce n'est pas ce que je voulais – AnujKu