Cela fonctionnera:
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"}) {
.......
}
Si j'ajoute une autre valeur comme celle-ci, cela échouera et me dira ceci:
La méthode HTTP spécifiée n'est pas autorisée pour la ressource demandée (la méthode de demande 'POST' n'est pas prise en charge)
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json","content-type=application/xml"}) {
.......
}
Je suppose que c'est parce que Spring pense que les deux valeurs type de conten ont une relation "ET" mais à la place je veux qu'elles soient "OU".
Aucune suggestion?
Merci!
Avez-vous essayé de faire content-type=application/json,application/xml
?
Je ne sais pas si cela fonctionnerait, mais en mettant deux content-type
en-têtes là-dedans, je pense qu'un seul gagnera.
OU
utiliser éventuellement deux RequestMapping
annotations sur la même méthode avec des content-type
en-têtes?
Si vous utilisez Spring 3.1.x . Vous pouvez regarder en utilisant consomme , produit les attributs de l'annotation @RequestMapping. Voici le blog du printemps sur les améliorations:
http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements/
Extrait du document ci-dessus:
@RequestMapping(value="/pets", headers="Content-Type=application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
est remplacé par:
@RequestMapping(value="/pets", consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
De plus, si vous avez besoin de plusieurs types de supports. Vous pouvez effectuer les opérations suivantes:
produces={"application/json", "application/xml"}
consumes={"application/json", "application/xml"}