[英]REST and spring-mvc
由于基于 REST 的控制器方法仅根据请求将对象(而不是视图)返回给客户端,我如何向我的用户显示视图? 或者也许更好的问题是什么是将 spring-mvc web 应用程序与 REST 结合的好方法,所以我的用户总是得到答案,不仅仅是(例如)JSON 格式,而且还有视图?
据我所知,基于 REST 的控制器非常适合移动应用程序(例如 twitter ),其中视图在应用程序内部处理,服务器唯一需要担心的是将正确的对象传递给正确的请求。 但是网络应用程序呢?
我可能在几件事上是错的(如果我错了,请纠正我),因为我正在尝试了解 REST 并且我仍在学习。
为了简化事情 - 您基本上有两个选择:1)构建 Spring MVC 应用程序。 2) 构建 REST 后端应用程序。
在第一个选项的情况下 - 在您的应用程序中,您将同时拥有后端和前端(MVC 部分)。
在第二个选项的情况下,您只构建后端应用程序并通过 REST API 公开它。 在大多数情况下,您需要为您的应用程序构建另一个应用程序 - REST 客户端。 这是一个更灵活的应用程序,因为它让您有机会从各种客户端访问您的后端应用程序 - 例如,您可以拥有 Android、IOS 应用程序,您可以使用 Angular 等实现 Web 应用程序......
请注意,thins 并不是那么简单,您可以在一个应用程序中同时拥有 REST 后端和 REST 客户端等......这只是非常非常简化,以便您获得一些总体情况。 希望这澄清了一些事情。
还有一些与 REST 和视图相关的额外说明值得学习。 从您的问题中,我可以看出您指的是 UI(用户界面)和典型 MVC 用法意义上的“视图”。 但是“视图”在不同的上下文中可能意味着不同的东西。
所以:
此方法返回一个视图
@RequestMapping("/home")
String home(Model model) {
return "home"; // resources\templates\home.html
}
此方法返回字符串
@RequestMapping(value = "/home")
@ResponseBody
public String home() {
return "Success";
}
如果您使用@ResponseBody
注释方法,Spring 将使用 json 映射器来生成响应。 取而代之的注释与每个方法的@ResponseBody
你可以注释你的类@RestController
。
如果要返回视图,则需要使用@Controller
而不是@RestController
来注释该类并配置一个viewresolver。 如果您将 spring-web 作为类路径的依赖项,Bij 默认 spring 将使用 thymeleaf 作为视图解析器。 该方法的返回类型是一个引用要呈现的模板的字符串。 模板存储在src/main/resources/templates
。
您可以在 spring 网站上找到指南: https : //spring.io/guides/gs/serving-web-content/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.