Comment renvoyer du JSON à partir du printemps de service RESTful et l'accès à l'aide RestTemplate classe
J'ai fait un printemps de service web RESTful pour donner de la liste de chansons en JSON formate, pour cela, j'ai ajouté des noms de chansons dans une Liste et je suis retourné ce à partir de l' @Restcontroller de mon Ressort du service web RESTful.DONC @RestController automatiquement le processus de cette Liste et rturns moi cette forme JSON ["song1","song2","song3"].
Maintenant tout organisme peut me dire comment je peux retourner noms de la chanson avec un peu plus de l'attribut comme
- (Nom de la chanson , du Cinéma, Parolier, Chanteur(s), le Total des hits)
Par Exemple - (“Lungi Dance”, “Chennai Express”, "Honey Singh", "Honey Singh”, 5000).Aussi me dire comment puis-je accéder à mon spring MVC de l'application de l'appel de ce service web à l'aide de RestTemplate.
Merci de m'indiquer les modifications dans les fichiers ci-dessous.
À l'intérieur de mon @RestController classe de mon Ressort du service web RESTful
@RequestMapping(value = "/topsongsWS", headers="Accept=application/json")
Public List<?> getTopSongsWS()
{
List<String> l1 = new ArrayList<String>();
l1.add("mann mera (Table No 21)");
l1.add("Lazy lad (Ghanchakkar)");
l1.add("Oye boy Charlie (Matru Ki Bijli Ka Mandola)");
l1.add("Blue Hai Pani Pani");
l1.add("Latt lag gayi (Race 2)");
return l1;
}
À l'intérieur de mon config-servlet.xml
<context:component-scan base-package="com.songs.service.controller" />
<mvc:annotation-driven />
À l'intérieur du contrôleur de mes spring MVC app appel à ce service web RESTful
@RequestMapping(value="/topsongs",method=RequestMethod.POST)
public String getTopSongs(ModelMap md)
{
//did stuff to configure headers & entity
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
HttpEntity<String> entity = new HttpEntity<String>(headers);
//this is the URL of my RESTfulservice returning JSON format ["song1","song2","song3"]
String url="http://localhost:7001/SongAppWS/songappWS/topsongsWS";
RestTemplate rt=new RestTemplate();
ResponseEntity<?> listoftopmovies=rt.exchange(url,HttpMethod.GET,entity, List.class);
md.addAttribute("listname", "Top 5 Songs of The Week:");
String response=listoftopmovies.getBody().toString();
List<String> listed = new ArrayList<String>(Arrays.asList(response.split(", ")));
md.addAttribute("res",listed);
return "Sucess";
}
- Si je comprends votre question correctement, vous devez
getTopSongsWS
de retourList<Song>
, pasList<?>
. Or, cela implique la création de cet objet de domaine pour répondre à vos exigences. Il n'est pas clair pourquoi vous appelez votre propre point de terminaison REST à partir d'un autre contrôleur au lieu d'utiliser directement son soutien service. De toute façon la question est trop large, car elle touche à de nombreux concepts, et il semble qu'il vous manque quelques bases, je suggère d'avoir un coup d'oeil à Printemps guides pour voir comment bien la couche de votre application.
Vous devez vous connecter pour publier un commentaire.
Le retour de vos chansons avec plus d'attribut, vous devez créer une ressource de la représentation de la classe.Dans votre cas,il pourrait ressembler à
Puis dans votre détente ws
Dans votre application spring mvc, vous devriez avoir trop les ressources de la représentation de la classe, et le type de réponse sera désormais
Song
au lieu deString
Pour consommer votre ws, cela devrait fonctionner
}
RestTemplate
vous devez utiliser le modèle de classe comme la Liste
Jetez un oeil ci-dessous le code source sur github. Il a réponse json comme objet. J'espère que ça aidera.
https://github.com/mohansaravanan/spring
https://github.com/mohansaravanan/spring/tree/master/springmvc-3.2.2