En passant objets JSON dans une requête HTTP GET à l'aide de Spring MVC

Selon cette RESTE modèle et à ce que je pense est un consensus sur le RESTE: tout RESTE récupération doit être effectuée comme une requête HTTP GET.
Le problème maintenant est de savoir comment traiter complexe objets JSON en tant que paramètres dans les requêtes GET avec Spring MVC.
Il y a aussi un autre consensus, j'ai trouvé en disant: "utiliser la POSTE pour les récupérations de!" juste parce que "les grandes entreprises le faire!", mais j'ai été invité à essayer de coller à la "RESTE le niveau 2".

Première question: suis-je en train d'essayer de faire quelque chose qui a du sens?

Je veux envoyer via les requêtes GET tableaux /listes /ensembles d'objets JSON, en Java avec Spring MVC.
Je n'arrive pas à comprendre quel est le problème avec mes tentatives, j'ai essayé d'ajouter/supprimer des guillemets, joué un peu avec les paramètres de l'URL, mais je ne peux pas atteindre cet objectif.

Quel est le problème avec le code suivant? L'extrait de code est à venir à partir d'un contrôleur MVC.

@RequestMapping(
        value = "/parseJsonDataStructures",
        params = {
                "language",
                "jsonBeanObject"

        }, method = RequestMethod.GET, headers = HttpHeaders.ACCEPT + "=" + MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public HttpEntity<ParsedRequestOutputObject> parseJsonDataStructures(

        @RequestParam String language,
        @RequestParam CustomJsonBeanObject[] customJsonBeanObjects){

    try {
        ParsedRequestOutputObject responseFullData = customJsonBeanObjectService.parseJsonDataStructures(customJsonBeanObjects, language);

        return new ResponseEntity<>(responseFullData, HttpStatus.OK);
    } catch (Exception e) {
        //TODO
    }
}

J'ai essayé plusieurs façons de construire la requête d'URL (toujours obtenir le code HTTP de 400 Bad Request), c'est un exemple:

http://[...]/parseJsonDataStructures?language=en&jsonBeanObject={"doubleObject":10, "enumObject":"enumContent", "stringObject":"stringContent"}

L'objet JSON variables ar de type:

  • Double (pas de la primitive)
  • enum
  • Chaîne

Je suis en supposant que je peux passer plusieurs jsonBeanObject paramètres les uns après les autres.

La jsonBeanObject Java bean est:

public class CustomJsonBeanObject {

    private Double doubleObject;
    private CustomEnum enumObject;
    private String stringObject;

    /**
     * Factory method with validated input.
     *
     * @param doubleObject
     * @param enumObject
     * @param stringObject
     * @return
     */
    public static CustomJsonBeanObject getNewValidatedInstance(Double doubleObject, CustomEnum enumObject, String stringObject) {
        return new CustomJsonBeanObject
                (
                        doubleObject ,
                        enumObject   ,
                        stringObject
                );
    }

    private CustomJsonBeanObject(Double doubleObject, CustomEnum enumObject, String stringObject) {
        this.doubleObject = doubleObject;
        this.enumObject = enumObject;
        this.stringObject = stringObject;
    }


    public CustomJsonBeanObject() {}

    //getter setter stuff

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
Vous ne serez pas faire quelque chose juste parce que "les grandes entreprises le faire!", mais vous aurez juste parce que "le reste de niveau 2 des règles de dire ça!"?
Btw, Googlé "reste" de niveau 2", et n'a rien trouvé mais les lits.
comme je l'ai écrit: "j'ai été invité à essayer de coller à la "RESTE le niveau 2"", c'est à dire qui n'est pas un choix 🙂
Pourriez-vous ajouter le code pour CustomJsonBeanObject, trop?
Fait, j'ai aussi ajouté que l'exécution de la requête d'URL je suis toujours obtenir le code HTTP de 400 Bad Request.

OriginalL'auteur TPPZ | 2014-07-03