瑞吉外卖完善功能时测试功能报错汇总

接口500异常:服务器内部异常,通常是数据库异常。

问题一:

1‘报错为:

  前端返回删除成功,后端也不报错,但是我进行删除操作后,并没有删除数据库中的数据。

==> Preparing: DELETE FROM category WHERE id=? ==> Parameters: null

执行了删除操作,前端能看见id,但是后端数据库返回的id值为null

原代码:   

 @DeleteMapping
    public R<String> delete(  Long id) {
        log.info("删除分类,id为:", id);
        try {
            categoryService.remove(id);
            return R.success("分类信息删除成功");
        } catch (Exception e) {
            log.error("删除分类失败,ID:{}", id, e);
            throw new RuntimeException("删除操作失败");
        }

排查原因为:

前端传过来的值为ids,而后端命名为id,传参无法正常完成,前端传过来的参数后端接收不到。

修改代码为:加上注解@RequestParm("ids")   指定前端传过来的数据为ids指定为后端id

    @DeleteMapping
    public R<String> delete(@RequestParam("ids") Long id) {
        log.info("删除分类,id为:", id);
        try {
            categoryService.remove(id);
            return R.success("分类信息删除成功");
        } catch (Exception e) {
            log.error("删除分类失败,ID:{}", id, e);
            throw new RuntimeException("删除操作失败");
        }

    }

@RequestParm:用于将请求参数(前端的URL)绑定到控制器(controller)方法参数上的注解

问题二:

2.添加菜品和修改菜品操作不能成功,因为图片无法上传上去,选中了图片,但是图片无法上传上后台

报错显示为:5  INFO 20388 --- [io-8080-exec-10] com.cyx.reggie.filter.LoginCheckFilter   : 本次请求/common/upload不需要处理
2024-07-23 14:20:29.150 ERROR 20388 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.] with root cause

这是因为上传的文件超过了服务器允许的最大文件大小限制,这里我们简单解决这个问题。

将下面的代码添加到application.yml

  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

在这里,maxUploadSize属性设置了单个上传文件的最大大小(以字节为单位),而maxInMemorySize设置了在提交到临时存储之前,文件的最大内存大小。

问题三:

3.404报错:网页错误情况返回的一种状态码,表示服务器无法找到用户请求的资源。

我编写的菜品删除和停售按钮点击后出现404报错


    @DeleteMapping()
    public R<String> delete(@RequestBody  String ids) {

        log.info(ids.toString());
        //  使用逗号分割字符串,并转换为List
        List<String> id = Arrays.asList(ids.split(","));
        dishService.removeByIds(id);
       return R.success("删除成功");
    }
这个报错是因为没有清晰注解的使用条件,这里传入的请求是URL,但是对于注解来说
@RequestBody :用于接收JSON格式的请求体,并自动将其转换为请求体类的对象。

如果要使用请求体接收,应该将代码修改为:

   @DeleteMapping("/delete")
    public R<String> delete(@RequestBody DeleteDishRequest request) {
        log.info("Received ids: {}", request.getIds());
        // 使用逗号分割字符串,并转换为List
        List<String> idList = Arrays.asList(request.getIds().split(","));
        dishService.removeByIds(idList);
        return R.success("删除成功");
    }
更为简单的修改方式为,在原代码上直接删除@RequestBody注解

 

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值