1

在我的练习中,我必须开发一个可以通过 WebGUI 和 REST 服务访问的 spring 应用程序。现在我浏览了 Spring MVC 的示例,有这个关于 Spring MVC 的 hello world 教程。

控制器如下所示:

 @Controller
 @RequestMapping("/welcome")
 public class HelloController {

    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        model.addAttribute("message", "Spring 3 MVC Hello World");
    return "hello";
    }
}

然后我查看了如下所示的Spring REST 示例

@Controller
@RequestMapping("/movie")
public class MovieController {

@RequestMapping(value = "/{name}", method = RequestMethod.GET)
public String getMovie(@PathVariable String name, ModelMap model) {

    model.addAttribute("movie", name);
    return "list";

}

@RequestMapping(value = "/", method = RequestMethod.GET)
public String getDefaultMovie(ModelMap model) {

    model.addAttribute("movie", "this is default movie");
    return "list";

}

}

现在我想知道,这两个示例(Spring-mvc 和 Spring-rest)有何不同?它们都使用相同的注释并且工作相似。这不都是 REST 示例吗?

如何为 Spring-MVC 应用程序提供 Rest-Interface?

问候

4

3 回答 3

2

为了向 Spring MVC 应用程序提供 rest 接口,您可以将带有路径名的 @RequestMapping 注解应用于控制器中的每个方法,这将为您想要提供的每个 rest 服务创建一个唯一的 URL 路径。

这意味着,其余的服务只不过是 Spring MVC 控制器中带有 @RequestMapping 注释的方法。

如果您想了解 Spring MVC 如何支持基于 Rest 的服务,以下链接可能会有所帮助:

http://blog.springsource.org/2009/03/08/rest-in-spring-3-mvc/#features

于 2013-04-17T19:36:54.040 回答
1

这两个示例都是关于 Spring Web MVC 的。

你应该更多地关注定义,比如什么是 REST

https://en.wikipedia.org/wiki/Representational_state_transfer

Representational State Transfer 旨在唤起一个精心设计的 Web 应用程序如何表现的图像:呈现一个网页网络(虚拟状态机),用户通过选择链接(状态转换)在应用程序中前进,导致下一页(代表应用程序的下一个状态)被传输给用户并呈现以供他们使用。

Spring Web MVC 极大地促进了 REST Web API 的开发,仅此而已。

于 2013-04-17T19:37:20.343 回答
-1

请记住 @ResponseBody 作为方法的返回类型将是 REST。当然,返回的对象可以使用 JSON 或 XML 进行协商。

于 2015-04-25T18:46:40.387 回答