我是web开发新手。我计划创建一个web服务,它将作为网站和移动应用程序的后端。我想知道是否可以使用相同的方法返回不同类型的数据。
例如:如果我使用http://somewebsite/getdetails.jsp应该给我和modelView返回类型和http://somewebsite/getdetails.json应该给json格式的模型。
我不想创建两个不同的控制器来处理这个
如果有其他更好的方法,也请分享你的意见。
我对其他解决方案也持开放态度
Spring 4.0/Spring Boot使您能够很容易地实现这一点。我目前正在为基于浏览器的客户端开发移动和后端web服务(API),我只是简单地在URL @RequestMapping("/API")下拆分移动API。此外,Spring允许您轻松实现基于RESTful url的应用程序。我建议您为API和Web MVC使用两个不同的控制器,因为它确保了两个不同逻辑之间的完全分离。例如
你真的想实现像下面这样的东西吗?
@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的总体结构:
基于桌面和移动浏览器访问的普通URL
这些控制器使用@Controller
注释因为它不会自动启用@ResponseBody
www.mybusinesscard.com.au/->索引
//显示所有的名片
www.mybusinesscard.com.au/businesscards ->查看所有
//保存表单
www.mybusinesscard.com.au/businesscard/save -> save a card
以下控制器示例用于移动API:
以下控制器使用@RestController
注释自动启用WebServices所需的需求。例:@ResponseBody
www.mybusinesscard.com.au/api ->索引
//显示所有的名片
www.mybusinesscard.com.au/api/businesscards ->查看所有
//从form
保存www.mybusinesscard.com.au/api/businesscard/save -> save a card