代码比较:
@Controller()
@RequestMapping("/product/")
public class ProductController {
/**
* 获取商品详情 www.myimooc.com/productId/detail.do?productId=111
* @return
*/
@RequestMapping("detail.do")
@ResponseBody
public ServerResponse getDetail( Integer productId) {
return iProductService.getProductDetail(productId);
}
/**
* 获取商品详情 www.myimooc.com/productId/111
* @return
*/
@RequestMapping(value = "/{productId}",method = RequestMethod.GET)
@ResponseBody
public ServerResponse getDetailRESTful(@PathVariable Integer productId) {
return iProductService.getProductDetail(productId);
}
/**
* 分页查询商品列表 通过模糊查询商品名和商品类别
* @param keyword 模糊查询商品名
* @param categoryId 商品类别
* @param pageNum
* @param pageSize
* @param orderBy
* @return
*/
@RequestMapping("list.do")
@ResponseBody
public ServerResponse<PageInfo> list(@RequestParam(value = "keyword",required = false)String keyword,
@RequestParam(value = "categoryId", required = false) Integer categoryId,
@RequestParam(value = "pageNum",defaultValue = "1")int pageNum,
@RequestParam(value = "pageSize",defaultValue = "10")int pageSize,
@RequestParam(value = "orderBy",defaultValue = "")String orderBy){
return iProductService.getProductByKeywordCategory(keyword,categoryId,pageNum,pageSize,orderBy);
}
//http://www.happymmall.com/product/手机/100012/1/10/price_asc
@RequestMapping(value = "/{keyword}/{categoryId}/{pageNum}/{pageSize}/{orderBy}",method = RequestMethod.GET)
@ResponseBody
public ServerResponse<PageInfo> listRESTful(@PathVariable(value = "keyword")String keyword,
@PathVariable(value = "categoryId")Integer categoryId,
@PathVariable(value = "pageNum") Integer pageNum,
@PathVariable(value = "pageSize") Integer pageSize,
@PathVariable(value = "orderBy") String orderBy){
if(pageNum == null){
pageNum = 1;
}
if(pageSize == null){
pageSize = 10;
}
if(StringUtils.isBlank(orderBy)){
orderBy = "price_asc";
}
return iProductService.getProductByKeywordCategory(keyword,categoryId,pageNum,pageSize,orderBy);
}
//http://www.happymmall.com/product/keyword/手机/1/10/price_asc
@RequestMapping(value = "/keyword/{keyword}/{pageNum}/{pageSize}/{orderBy}",method = RequestMethod.GET)
@ResponseBody
public ServerResponse<PageInfo> listRESTful(@PathVariable(value = "keyword")String keyword,
@PathVariable(value = "pageNum") Integer pageNum,
@PathVariable(value = "pageSize") Integer pageSize,
@PathVariable(value = "orderBy") String orderBy){
if(pageNum == null){
pageNum = 1;
}
if(pageSize == null){
pageSize = 10;
}
if(StringUtils.isBlank(orderBy)){
orderBy = "price_asc";
}
return iProductService.getProductByKeywordCategory(keyword,null,pageNum,pageSize,orderBy);
}
//http://www.happymmall.com/product/category/100012/1/10/price_asc
@RequestMapping(value = "/category/{categoryId}/{pageNum}/{pageSize}/{orderBy}",method = RequestMethod.GET)
@ResponseBody
public ServerResponse<PageInfo> listRESTful(@PathVariable(value = "categoryId")Integer categoryId,
@PathVariable(value = "pageNum") Integer pageNum,
@PathVariable(value = "pageSize") Integer pageSize,
@PathVariable(value = "orderBy") String orderBy){
if(pageNum == null){
pageNum = 1;
}
if(pageSize == null){
pageSize = 10;
}
if(StringUtils.isBlank(orderBy)){
orderBy = "price_asc";
}
return iProductService.getProductByKeywordCategory("",categoryId,pageNum,pageSize,orderBy);
}
小知识:
get请求的 headers 中没有 content-type 这个字段,post 的 content-type 有 :
a)application/x-www-form-urlencoded 这种就是一般的文本表单用 post 传地数据,只要将得到的 data 用 @RequestParam 或 request.getParamter() 获取即可;
b)multipart/form-data ,用于文件上传,此时 form 的 enctype 属性必须指定为 multipart/form-data;
c)application/json,将数据以json对象的格式传递;
d)text/xml;
e)put 和 delete 请求的headers 是有 content-type 这个字段的,只不过这两个方法类型目前不常用;