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 需要根据项目的规划自行统一。