web-dev-qa-db-fra.com

Le framework REST de Spring MVC peut-il accepter des chaînes de requête plutôt que des PathVariables?

Dans tous les tutoriels et articles que j'ai lus concernant les ajouts RESTful de Spring 3 à Spring MVC, je n'ai jamais vu qu'une seule façon pour l'utilisation de transmettre des données de requête, via un @PathVariable, comme ça :

@RequestMapping(value="/shops/{name}", method=RequestMethod.GET)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
    ...
}

qui répondrait à quelque chose comme http://www.example.com/myservlet/shops/{name}, qui pourrait être évalué à http://www.example.com/myservlet/shops/thebestshoparound.

Ma question est la suivante: est-il possible de configurer une interface RESTful qui accepte les demandes basées sur des chaînes de requête classiques, par exemple http://www.example.com/myservlet/shops?name=thebestshoparound, au lieu de PathVariables?

Cela semble être une question vraiment simple, mais je ne la trouve nulle part en ligne.

28
Ken Bellows

Oui, utilisez l'annotation @RequestParam , voici un exemple:

public @ResponseBody Shop getShopInJSON(@PathVariable String name, @RequestParam(value="query", required=false) String query) {
    // do stuff
}
48
nickdos