【发布时间】:2014-05-13 07:15:50
【问题描述】:
我创建了一个 Spring RESTful Web 服务,用于提供 JSON 格式的热门歌曲列表,为此我在列表中添加了歌曲名称,并从我的 Spring RESTful Web 服务的@Restcontroller 返回了这个。所以@RestController 将自动处理这个 List 并把这个 JSON 格式转给我 ["song1","song2","song3"]。
现在任何人都可以告诉我如何返回带有更多属性的歌曲名称,例如 - (歌曲名称,电影,作词人,歌手,总点击数) 例如 - (“Lungi Dance”、“Chennai Express”、“Honey Singh”、“Honey Singh”、5000)。还告诉我如何访问我的 spring MVC 应用程序使用 RestTemplate 调用此 Web 服务。 请告诉我以下文件的变化。
在我的 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";
}
【问题讨论】:
-
如果我正确理解您的问题,您需要
getTopSongsWS来返回List<Song>,而不是List<?>。这涉及实际创建此域对象以满足您的要求。目前尚不清楚为什么要从另一个控制器调用自己的 REST 端点,而不是直接使用其支持服务。无论哪种方式,这个问题都过于广泛,因为它涉及许多概念,而且您似乎缺少一些基础知识,我建议您查看Spring guides 以了解如何正确分层您的应用程序。