使用Spring Framework的RESTful Web服务

时间:2016-09-04 14:24:39

标签: spring web-services rest spring-mvc spring-rest

我使用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应用程序的实现有何不同?

任何人都可以帮我理解这个吗?

3 个答案:

答案 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进行注释。