如何从 spring RESTful 服务返回 JSON 并使用 RestTemplate 类访问它

2024-01-23

我制作了一个 Spring RESTful Web 服务,用于以 JSON 格式提供热门歌曲列表,为此,我在列表中添加了歌曲名称,并从 Spring RESTful Web 服务的 @Restcontroller 返回了该名称。所以 @RestController 将自动处理此列表并r给我这个 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";
    }

要返回具有更多属性的歌曲,您应该创建一个资源表示类。在您的情况下,它可能看起来像

class Song {
private String name
private String film
//other fields and methods...

然后在你宁静的世界里

@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 应用程序中,你也应该有资源表示类,并且响应类型现在是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";    

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 spring RESTful 服务返回 JSON 并使用 RestTemplate 类访问它 的相关文章

随机推荐