我使用Spring编写了一些RESTful etc服务(通过阅读在线/视频教程等),但我仍然有一些疑问。
当我们使用Spring模块编写一个web应用程序时,我们使用控制器代码,类似于以下所示:
@Controller
public class SimpleController {
@RequestMapping("/welcome")
ModelAndView handleIncomingWelcomeReq() {
ModelAndView mw = new ModelAndView("WelcomePage","welcomeKey","WelcomeKey's value!");
return mw;
}}
在上面的代码中,有这个控制器返回的ModelAndView对象,可以像下面的URL那样调用这个对象:
http://localhost:8080/contextRoot/welcome现在,如果我们排除“视图”部分并只返回模型,它不像一个web服务吗?
所以我怀疑,在春季,我们是否使用相同的API/jar来创建web应用程序或RESTful web服务?
我所读到的是,对于Spring支持,它有注释@RestController注释(它本身类似于@Contoller + @ResponseBody注释)。
那么,在Spring框架中,REST WS和web应用程序的实现有什么不同呢?
有人能帮我理解这个吗?
发布于 2016-09-04 18:45:21
是的,我们可以使用Spring编写RestService & web应用程序。使用@RestController公开REST服务,使用@Controller公开web应用程序。
@RestController是带有@Controller和@ResponseBody的元注释。@Controller将搜索已注册的ViewResolvers,而@RestController则不会搜索。
发布于 2016-09-05 08:32:13
@Controller
public class SimpleController {
@RequestMapping("/welcome", method = RequestMethod.GET, produces="application/json")
public @ResponseBody JSONObject handleIncomingWelcomeReq() {
JSONObject j = new JSONObject();
j.put("welcomeKey", "WelcocmeKey's value!");
return j;
}下面是在json中返回响应的代码,主要是用户id、Rest、Apis。
发布于 2016-09-21 12:24:42
我建议使用@Controller而不是@RestController,因为@RestController不会扫描您的视图。因此,如果您的应用程序有自己的视图,并且还需要公开它的服务,您可以使用@Controller和@ResponseBody注释,输出作为JSON。
另一种选择是为RESTful the服务提供完全不同的URL,其中不同的控制器将处理请求。可以用@RestController对这些不同的控制器进行注释。
https://stackoverflow.com/questions/39317936
复制相似问题