1 问题引入
比较规范的使用RESTFUL API,查询员工资源,会有两种路径
查询单个员工 GET /v1/employee/1000
查询一组员工 GET /v1/employee
按照传统方式,需要写两个方法
@GetMapping("/v1/employee")
public R getResource() {...}
@GetMapping("/v1/employee/{id}")
public R getResource(@PathVariable String id) {...}
我觉的不优雅!
2 后端怎么写?
支持同时定义两个路由
@GetMapping(value = {"/v1/employee", "/v1/employee/{id}"})
public R getResource(@PathVariable Optional<String> id) {
if(id.isPresent())
return service.getEmployee(id.get());
else
return service.getEmployee();
}
这样统一业务,貌似优雅许多。
问题是前端怎么发请求呢,前端如果不处理,会在路径参数位置拼上undefined。
3 前端怎么请求?
前端也统一到一个函数中,如下:
export function getResource(id?: string) : Promise<ResponseBody>{
const url = id ? `/v1/employee/${id}` : `/v1/employee`
return request({
url,
method: 'get',
})
}
也避免写两个getResource了。