【项目】Restful API 存在问号的情况解读,搜索业务相关

Restful API 基本规范

  • GET user/1 获取id 为1的user资源
  • POST user/1 创建id 为1的user资源
  • PUT user/1 修改id 为1的user资源
  • DELETE user/1 删除id 为1的user资源

项目中用到的带?的URL

GET user/1?name=zhangsan

区别于

GET user/1

?name=zhangsan表示查询名字为zhangsan的user资源,即不是根据id查找的时候约定?后的参数为查询条件。

与搜索业务相关的带?的URL

前端需求:

  • 前端提取参数方便,使用地址栏显性展示搜索数据,所以请求都为GET
  • 面包屑导航
  • URL地址拼装查询条件
    查询URL?name=xxx&category=xxx

后端需求

  • Controller接收参数封装成map
    因为面包屑的导航,?后的参数是不确定的,一定要使用@requestParam(required = false)把参数序列化成map
    /**
     * 接收页面传递的参数  执行查询 返回结果 map
     * 兼容thymeleaf, 需要把请求方式给修改成GET
     * 
     * @param searchMap  参数条件封装的对象
     */
    @GetMapping
    @ApiOperation(value = "使用ES搜索商品服务")
    public Map search(@RequestParam(required = false) Map searchMap){
       return skuService.search(searchMap);
    }

小结

Restful API 存在?,可以很好的用去区分主键查询和关键字查询。
兼容前端的面包屑查询策略,GET请求下 + ?暴露查询关键字是一个有效的方案。
其他带?的 Restful API 需要根据项目的规划自行统一。

©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页