美文网首页
联调踩的坑:空和空字符串引发的巨大差异

联调踩的坑:空和空字符串引发的巨大差异

作者: c9096743e3b0 | 来源:发表于2020-11-12 23:23 被阅读0次

前言

今天和前端同学联调一个搜索接口,该接口会在图片上传后用于加载图片列表。诡异的是,这位同学在和我联调的过程中,每次上传图片后,却始终无法看到最新上传的图片。然而该接口在另外一个场景下是正常的,这也是我提供这个接口给他的原因。

排查过程

传了图片没被搜到?是不是上传后生成的图片 ID 没有落 DB?

看了一眼日志,果然没有 DB 相关的日志。那么是不是哪儿有做了控制,对应看了下代码,果然有个入参,跳过了图片 ID 的落库。

前端同学之前抄其他人的代码,就传了 true,所以导致图片 ID 压根没落 DB。听我一说,他立马试了下。我看日志确实走到了 DB,看来是向前了一步了呢。

不过前端同学仍然反馈说,还是查不到最新的图片。我用他产生的图片 ID,去搜相关日志,的确是没有搜索的返回。

看了半天日志,也瞥了几眼代码,还是毫无头绪。为什么明明另外一个场景可用,这个前端同学就拿不到正确结果呢?

还是做点尝试看能不能有点效果吧,我想到了两个场景做下比对。既然是同一个接口,我就在当前场景上传下图片,然后看下之前可用的那个场景是否拿到了最新图片的信息。结果是肯定的。那就说明,这两种场景的查询肯定是有区别的。

和前端同学对了下两种场景的入参,发现有个搜索关键词的字段 keyword。以前的场景时传了空字符串,而他这个场景压根没传。

我当时也没反应过来是这个问题,就和他说,要不试试参数搞一样?

前端同学试了下,果然通了。搞了一晚上,联调终于通了,内心很是酸爽,虽然已经晚上十一点了。

问题定位

知道是 keyword 这个字段捣的鬼,也促使我敏感地意识到问题所在。

我想起 SQL 查询塞值的时候,keyword 作为入参被特殊处理了,如下:

param.put("keyword", "%"+keyword+"%")

对应的 SQL 如下:

... where name like #{keyword}

恍然大悟,前端同学没传 keyword 时,系统默认取到了 null,然后到 SQL 塞值的时候,自然就拼接成了 where name like '%null%',也就是搜索接口会去匹配图片名含 null 这个字符串的数据。

我抽取了前端同学用这个接口能查到的数据,无一例外图片名字里都有 null 这个字符串。

而传空字符串,就不会改变语义,能匹配到所有数据。

启发

  1. 相信问题总能解决,在解决问题的刹那,你会有一种释然和成就感。
  2. 问题拆解,大问题拆解小问题,找到问题点,发现突破点,由少到多,慢慢消灭最终问题。
  3. 多方面多角度分析问题,多猜想多佐证消除问题。
  4. 做一些有意义的尝试,通过反馈,进一步确认自己的判断。
  5. 善于合作,互相引导,互相启发,共同解决问题,达到 1 + 1 > 2 的效果。

关注我的微信公众号,回复“礼包”领取我的学习资料

涵盖自学编程、Java技术、分布式笔记、算法刷题和程序员必读电子书等众多资料合集。

相关文章

  • 联调踩的坑:空和空字符串引发的巨大差异

    前言 今天和前端同学联调一个搜索接口,该接口会在图片上传后用于加载图片列表。诡异的是,这位同学在和我联调的过程中,...

  • 踩空

    我们两颗心 因为错开 所以痛苦

  • 踩空

    三岁那年,我跟着小叔叔到菜园去玩 不料一脚踩空,掉进了两米多深的红薯窖里 所幸身体无大碍,只是因为受惊吓有点痴呆 ...

  • 【踩空】

    想象与现实常有距离形成主客不一致导致我们踩空客观现实很难改变主观想象相对容易 在梦里踩空只是虚惊一场现实里后果却很...

  • 空 调

    仲夏夜,闷热难耐。 终于插上电源,打开遥控器,模式、温度、灯光、时长一并调试,最后开启静音,启动熄...

  • 踩空的楼梯

    踩空的楼梯 似乎在水里漂浮 五步之外难见尘埃 杂念或动或静 蹦跳着喷火 空气趁机燃烧 不在意灵魂走动 也许是书中某...

  • Swift3学习笔记:字符串和字符(Strings and Ch

    字符串和字符(Strings and Characters) 1. 字符串的非空、前缀、后缀判断 非空判断Stri...

  • 小程序与后端联调踩坑

    小程序与后端联调踩坑 本次练习是以springboot作为后端开发框架、微信小程序做前端交互。 后端代码截图: s...

  • 2018-11-12

    今日EURUSD总结 欧元破位回踩做空。这个回踩应该是四小时回调。 古人云:“弱水三千,只取一...

  • java初识

    java的数据类型 字面量 整数 浮点数 字符和字符串 boolean 空值 空值和空字符串的区别 转义序列 变量...

网友评论

      本文标题:联调踩的坑:空和空字符串引发的巨大差异

      本文链接:https://www.haomeiwen.com/subject/yhvmbktx.html