我制作了一个Spring RESTful网络服务,用于提供JSON格式的顶级歌曲列表,为此我在List中添加了歌曲名称,我从我的Spring RESTful Web服务的@Restcontroller返回了这个.SO @RestController将自动处理这个列表和rturns我这个JSON形式[“song1”,“song2”,“song3”]。
现在任何人都可以告诉我如何使用更多属性(如)返回歌曲名称 - (歌曲名称,电影,歌词,歌手,总点击次数) 例如 - (“Lungi Dance”,“Chennai Express”,“Honey Singh”,“Honey Singh”,5000)。还告诉我如何使用RestTemplate调用此Web服务的Spring MVC应用程序。 /强> 请告诉我下面文件的变化。
在我的Spring RESTful Web服务的@RestController类中
@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;
}
在我的config-servlet.xml
中<context:component-scan base-package="com.songs.service.controller" />
<mvc:annotation-driven />
在我的Spring MVC应用程序的控制器内部调用以上RESTful Web服务
@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";
}
答案 0 :(得分:1)
要返回具有更多属性的歌曲,您应该创建一个资源表示类。在您的情况下,它可能看起来像
class Song {
private String name
private String film
//other fields and methods...
然后在你的restfull ws
@RequestMapping(value = "/topsongsWS", headers="Accept=application/json")
public List<?> getTopSongsWS()
{
List<Song> l1 = new ArrayList<Song>();
l1.add(new Song(atr1,atr2....));
l1.add(new Song(atr1,atr2....));
l1.add(new Song(atr1,atr2....));
return l1;
}
在你的spring mvc app中,你也应该有资源表示类,响应类型现在是Song
而不是String
要消耗你的ws,这应该可行
@RequestMapping(value="/topsongs",method=RequestMethod.POST)
public String getTopSongs(ModelMap md)
{
String url="http://localhost:7001/SongAppWS/songappWS/topsongsWS";
RestTemplate rt=new RestTemplate();
Song[] songs = template.getForObject(url, Song[].class);
md.addAttribute("listname", "Top 5 Songs of The Week:");
md.addAttribute("res", Arrays.asList(songs));
return "Sucess";
}
答案 1 :(得分:0)
你必须使用像List
这样的模型类请在github中查看以下源代码。它以json响应为对象。希望它会有所帮助。 https://github.com/mohansaravanan/spring https://github.com/mohansaravanan/spring/tree/master/springmvc-3.2.2