将Spring用于Web和移动应用程序的最佳方式

时间:2015-10-03 06:58:11

标签: json spring model-view-controller mobile

我是网络开发的新手。我打算创建一个Web服务,它将作为网站和移动应用程序的后端。我想知道是否可以使用相同的方法返回不同类型的数据。

例如: 如果我使用http://somewebsite/getdetails.jsp应该给我和modelView返回类型,http://somewebsite/getdetails.json应该以json格式给出模型。

我不想创建两个不同的控制器来处理这个问题。

如果还有其他更好的方式,请分享您的意见。

我也愿意接受替代解决方案

1 个答案:

答案 0 :(得分:1)

Spring 4.0 / Spring Boot使您可以轻松实现这一目标。我目前正在为基于浏览器的客户端开发移动和后端的Web服务(API),我只是简单地在URL @RequestMapping(“/ api”)下拆分移动API。此外,Spring允许您轻松实现RESTful基于URL的应用程序。我建议您为API和Web MVC使用两个不同的控制器,因为它确保了两个不同逻辑之间的完全分离。 E.g。

你真的想实施类似的东西吗?

@SuppressWarnings("unchecked")
    public Map<Object, Object> test(@RequestParam(value="mobileyes") boolean mobile){

    if(mobile){
        Map<Object, Object> m = new HashMap<Object, Object>();
        m.put("test", "test")
        return m;
    } else {
        ModelAndView mv = new  ModelAndView();
        mv.addObject("test", "test");
        mv.setViewName("test");
        return (Map<Object, Object>) mv;
    }

    }

以上示例可能有效,但丑陋并且肯定会在不久的将来造成维护灾难。

这是我使用Spring Boot的Spring MVC的整体结构:

基于桌面和移动设备的浏览器访问的普通网址

这些控制器使用 @Controller注释,因为它不会自动启用@ResponseBody

www.mybusinesscard.com.au/ - &gt;索引


//显示所有商务卡

www.mybusinesscard.com.au/businesscards - &gt;查看全部


//从表格中保存

www.mybusinesscard.com.au/businesscard/save - &gt;保存卡

以下控制器示例适用于移动API:

以下控制器使用@RestController注释自动启用WebServices所需的要求。例如:@ResponseBody

www.mybusinesscard.com.au/api - &gt;索引


//显示所有商务卡

www.mybusinesscard.com.au/api/businesscards - &gt;查看全部


//从表格中保存

www.mybusinesscard.com.au/api/businesscard/save - &gt;保存卡