某电商项目开发中遇到的问题及解决方案总结

Spring Boot 后端

  • java.lang.IllegalStateException: It is illegal to call this method if the current request is not in
  • Invalid character found in method name. HTTP method names must be tokens
  • mybatis Invalid bound statement (not found)
  • Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xE6\xB5\x8B\xE8\xA
  • Spring Boot 2.x 使用PageHelper就是不分页

依赖要齐全
老老实实使用这个方式调用,最靠谱
在这里插入图片描述
参数可以继承这个类,方便使用

@Getter
@Setter
public class PageParam extends BaseObject {
    private Integer pageNum = 1;
    private Integer pageSize = 10;
    private String orderBy;
}

  • idea无法提取kotlin方法的参数
    这个不是什么大问题,两者的理念不同。在实际的业务开发中,很少为每个方法的参数写注释,因为参数的意义很明显,不再需要解释,如果是真的那个比较模糊的,可以单独写一下参数的意义,要求什么的。

  • RESTful中该不该用http协议中的响应码
    尽量使用和http语义一致的响应码。由于业务的复杂性,自己封装一个响应是非常必要的。比如

/**
 * 所有前后端分类的请求,返回这个包装类
 */
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class Response<T> extends BaseObject{
    /**
     * 自定义响应码
     */
    private Integer code;
    /**
     * 响应数据
     */
    private T data;
    /**
     * 正常情况下,对没有响应数据的情况一个解释
     * 出错情况下,前端显示文案
     */
    private String msg;

    private static final Integer OK = 200;
    private static final Integer BAD_REQUEST = 400;
    private static final Integer UNAUTHORIZED = 401;
    private static final Integer INTERNAL_SERVER_ERROR = 500;

    public static Response success(){
        return new Response(OK, null, null);
    }
    public static Response success(Object data){
        return new Response(OK, data, null);
    }

    public static Response success(Object data, String msg){
        return new Response(OK, data, msg);
    }

    public static Response fail(String msg) {
        return new Response(BAD_REQUEST, null, msg);
    }
    public static Response failForUnauthorized(String msg) {
        return new Response(UNAUTHORIZED, null, msg);
    }
    public static Response failForInternalServerError(String msg) {
        return new Response(INTERNAL_SERVER_ERROR, null, msg);
    }

    public static Response fail(Object data, String msg){
        return new Response(BAD_REQUEST, data, msg);
    }
}

关于错误的处理,简单点的可以直接放msg的,前端直接显示。或者前后端对具体问题,具体定义响应码,然后分别做兼容处理。这就麻烦些,但也更灵活。

  • Spring Boot跨域
    只要前后端分离,肯定会跨域,不同项目不一样,代码又长得差不多,可以考虑做一个配置文件,然后Spring 自动注入,最后写入跨域配置里。

  • kotlin Spring Boot @Validated校验不生效
    换成kt的写法,不出问题的也要出些问题

  • 用了lombok后,json无法输出数据
    用了lombok,一定要小心是不是开启了lombok,是不是开启了IDEA的注解处理,是不是安装了lombok的插件

  • restTemplate.getForObject泛型丢失
    与其绕这么大一圈,不如直接拿String转

  • Spring boot + JUnit5 测试
    还是不建议用junit5,使用junit4 + kt比较稳

  • Spring mvc中get请求使用@RequestBody
    写着写着就随手加上去了

  • 时间日期相关操作
    时间日期的处理,到哪都逃不掉

  • lombok修改log字段名的方法
    lombok还是非常好用的,稍加配置,使之符合自己的使用习惯,就非常棒

  • spring boot使用aop拦截Controller和Service以方便调试
    加这样一个AOP开发调试的时候还是非常方便的,只是现在还不知道怎么写成可配置,如果是可配置,可移植的,就非常好用了

  • Spring Boot自定义注解以方便检验
    这个还行,但是好像不能抛异常
    可以做一些简单的,重复的校验

  • mybatis sum后结果为null处理方法

Vue大前端

  • Property or method “xxxx” is not defined on the instance but referenced during render.
  • TypeError: Cannot set property ‘_isHover’ of null
  • TypeError: Cannot read property ‘length’ of null
    Vue的报错有时候真不知道时哪里错了
  • 解决vue疯狂报错的一个好办法
  • iview表格固定列显示异常
  • axios拿不到header中的token
  • 前后端分离的情况下进行图片上传
  • Vue全局错误提示的一点思考
    在不可以恢复的错误处理中,全局错误处理仍然是非常值得重视和思考的处理方式
  • await异常捕获
    即便是有了全局错误处理,异常还是需要慎重考虑然后处理掉的
  • 高德地图绘制多边形
    老老实实用原生API,不要一开始使用高度封装的组件
  • 设置webstorm不检测javascript分号

数据库

  • mysql恢复数据

你可能感兴趣的:(小结)