我使用Spring Framework编写了一些RESTful Web服务(通过阅读在线/视频教程等内容),但我仍有一些疑问。
当我们使用Spring MVC模块编写 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
现在,如果我们排除“视图”部分并仅返回模型,它是否就像网络服务一样?
所以我的疑问是,在Spring中我们使用相同的API / jar来创建Web应用程序或RESTful Web服务吗?
我读到的内容是,对于Spring REST支持,它具有注释@RestController
注释(本身就像@Contoller
+ @ResponseBody
注释)。
那么在Spring Framework中REST WS和Web应用程序的实现有何不同?
任何人都可以帮我理解这个吗?
答案 0 :(得分:0)
是的,我们可以写RestService&使用Spring的Web应用程序。使用@RestController为Web应用程序公开REST服务和@Controller。
@RestController是@Controller和@ResponseBody的元注释。 @Controller将搜索已注册的ViewResolvers,而@RestController则不会。
答案 1 :(得分:0)
@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。
答案 2 :(得分:0)
我建议使用@Controller而不是@RestController,因为@RestController不会扫描您的视图。因此,如果您的应用程序拥有自己的视图并且还需要公开它的服务,您可以使用@Controller和@ResponseBody注释,输出为JSON。
另一个选择是为RESTful Web服务提供完全不同的URL,其中不同的控制器将处理请求。这些不同的控制器可以使用@RestController进行注释。