我需要创建一个能够呈现视图的项目(使用JSP),我也需要提供REST API。
有可能在同一个项目中拥有所有这些吗?
URL如何用于访问每个内容?
谢谢!
答案 0 :(得分:0)
是的,你可以在一个应用程序中混合使用经典的@Controller和一个提供基于JSP和@RestController的视图的配置,正如你可以从官方的javadoc中读到的那样,是
一个便利注释,它本身用@Controller和注释注释 @ResponseBody。
答案 1 :(得分:0)
如果您尝试遵循严格的Roy Fielding-like principles REST,那么可能不会。
但是,如果您只是想要一个松散意义上的REST API,那么请说一个返回资源的接口(JSON,HTML,文档等)。这样想吧。大多数Web应用程序(呈现视图的应用程序)也将具有某种形式的AJAX调用,AJAX调用只是调用返回一些JSON(或其他东西)的REST API(~ish),然后JavaScript将解析响应和在视图上呈现一些东西。
因此,大多数由AJAX提供支持或辅助的现代网站将混合使用REST API和渲染视图。
鹤鹤。我刚刚让世界各地的REST开发人员感到畏缩。
现在,这是一个好习惯吗?这是另一个故事。如果您正在讨论基于GUI的大型应用程序和使用REST API的大型应用程序,通常您不会将它们混合使用。事情变得混乱,模块化对于维护来说非常棒。同样值得一提的是,通常如果你要100%RESTful,那么自从你开始跟踪状态等,你可能不再需要用于UI开发的技术。但如果它的小东西或UI相关的东西去吧!
关于网址,请考虑一下。你标记了Spring,我正在使用它。
//I will render a view!
@RequestMapping("/blah")
public String blah(Model model){
return "/view/blah";
}
//I return a JSON string of "/view/blah"
@RequestMapping("/blah")
public @ResponseBody String blah(Model model){
return "/view/blah";
}
这两个都在@Controller
内,他们都做同样的事情,但@ResponseBody
在一个非常非常松散的意义上,使第二个成为REST服务,因为它告诉Spring你要返回的是响应,而不是从中呈现视图。如果您设置了ViewResolver,则授予Spring只会尝试渲染视图。
Baeldung在Spring中有一个great breakdown个RESTful控制器,而不是Spring,是的,它们可以在同一个应用程序中使用。
希望这有帮助!
答案 2 :(得分:0)
是的,您可以只对预先设置控制器中配置的网址进行预防,并使用@RequestMapping为应用中的每个路径配置正确的网址。