《用户中心》后端项目controller中的deleteUser的测试与修改
《用户中心》中的直播视频中,没有对用户中心的管理方法deleteUser进行测试,此处补充下这部分内容。按视频中deleteUser方法的代码:
===
@PostMapping("/delete")
public boolean deleteUser(@RequestBody long id, HttpServletRequest request){
if(!isAdmin(request)){
return false;
}
if(id <= 0){
return false;
}
boolean res = userService.removeById(id);
return res;
}
===
我们使用如下的request测试:
===
POST http://localhost:8080/user/delete
Content-Type: application/json
{
"id": "1"
}
===
测试不成功,出现如下的错误描述:
Required request parameter ‘id’ for method parameter type long is not present
后端没有拿到id这个参数,而request中的确已经给出这个数据。猜测后端没有那么智能,能将1这个整形数据直接提取出来。那么我们将deleteUser接口重写,书写代码提取其中的id整型数据:
===
@PostMapping("/delete")
public boolean deleteUser(@RequestBody Map<String, String> dataBody, HttpServletRequest request){
if(!isAdmin(request)){
return false;
}
String idstr = dataBody.get("id");
if(idstr==null || idstr.isEmpty()){
return false;
}
long id=-1;
try{
id = Long.parseLong(idstr);
}catch (NumberFormatException e){
return false;
}
if(id <= 0){
return false;
}
boolean res = userService.removeById(id);
return res;
}
===
保存重新启动测试,这次对了,返回的值为true(如下图),再查看数据库id=1的数据的isDelete位的确被置为1,说明逻辑删除正确执行。

