一个校验接口引发的思考–我真的了解Response吗

一个校验接口

最近,我需要对接一个外部接口,基本功能是:校验指定的门店是否完善了货运信息。接口大致是这样的:

POST https://******/Dealer/CheckCarrier
Heads:Authorization=****,Content-Type=application/x-www-form-urlencoded
Request Body:DealerCode=**,StoreCode=**,BrandCode=**,BuCode=**
Response Body:
{"success":true,"message":"操作成功","data":"OK"}

这种 Response 的结构相信大家并不陌生吧。

第一个问题

拿到这个接口时,我觉得有点奇怪。 既然是校验接口,结果应该是 true 或 false 啊,怎么给了个字符串”OK”呢?于是,带着疑问,我找到了提供接口的同行 A。

一个校验接口引发的思考--我真的了解Response吗

同行 A 回复说, 不用管 data,校验的结果放在 success 里?这时,我头上多了更多的问号,感觉哪里怪怪的,又一时说不出个所以然。

第二个问题

思考片刻,我才意识到这种疑惑的根源–同行 A 对 Response 的理解和我不一样。在我看来,不管什么接口, data 放的都是最终结果,而 success 放的是是否正常地完成了调用

就拿这个接口来说,只要完成了校验,指定的门店不管有没有完善货运信息,success 都应该为 true。

那什么时候为 false 呢?当某些原因导致校验无法正常得到结果时,返回 false,例如,入参非法、门店未维护,而这些原因将被放入 message 里面。如果调用方想知道是哪种类型的异常,可以通过增加 code 字段来判断(我倒是觉得调用方没必要知道)。

难道一直以来我都是错的吗?

我试着和同行 A 交流这个问题,发了一堆废话后,同行 A 好像没有理解我的疑惑。

一个校验接口引发的思考--我真的了解Response吗

可能是我没表达清楚吧,我试着用比喻的方式来说明: 我想看看楼上有没有肉?data 里放的就是最终结果,即有没有肉,而 success 为 true 时,说明我顺利地爬上了漏,并确认了有没有肉,为 false 时,可能是我爬楼梯摔了一跤,没法确认有没有肉

一个校验接口引发的思考--我真的了解Response吗

最后,同行 A 好像认可了我的这套逻辑,当然,人家可能是觉得我太烦了,不想与我多费口舌。

结语

所以,我想知道,大家是怎么理解 Response 的。

最后,感谢阅读,欢迎私信交流。

2021-11-16的补充

2021-11-14 发布了文章后,收到了许多反馈。

首先,感谢各位:针对我的疑惑,许多热心的园友给出了自己的看法,让我收获良多。

其次,我也很抱歉:由于我的表述不当,导致很多人把文中的 Response 和 HTTP 的 Response 混淆在一起。这里我补上说明。

一个校验接口引发的思考--我真的了解Response吗

本文为原创文章,转载请附上原文出处链接:https://www.cnblogs.com/ZhangZiSheng001/p/15552479.html

Original: https://www.cnblogs.com/ZhangZiSheng001/p/15552479.html
Author: 子月生
Title: 一个校验接口引发的思考–我真的了解Response吗

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575778/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SQL语言基础

    SQL语言基础 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新…

    数据库 2023年5月24日
    068
  • 日志:Redo Log 和 Undo Log

    本篇文章主要介绍 Redo Log 和 Undo Log: 利用 Redo Log 和 Undo Log 实现本地事务的原子性、持久性 Redo Log 的写回策略 Redo Lo…

    数据库 2023年6月11日
    076
  • 【Java框架】– SpringBoot大文件RestTemplate下载解决方案

    近期基于项目上使用到的RestTemplate下载文件流,遇到1G以上的大文件,下载需要3-4分钟,因为调用API接口没有做分片与多线程, 文件流全部采用同步方式加载,性能很慢。最…

    数据库 2023年6月6日
    099
  • zabbix监控配置项配置

    1.手动添加监控项 2. 使用模板添加监控项 3.0 邮件告警 创建主机并加入主机组 1.手动添加监控项 即获取数据的监控指标增加用户,修改用户,删除用户etc/passwd文件都…

    数据库 2023年6月14日
    081
  • [Mysql]null与真值

    SQL的逻辑运算使用的是三值逻辑,逻辑表达式的计算结果有三种可能, true, false, unknown 比较运算的表达式含 NULL时会产生 unknown结果,例如 SEL…

    数据库 2023年6月16日
    074
  • 动手实验查看MySQL索引的B+树的高度

    一:文中几个概念 h:统称索引的高度;h1:主键索引的高度;h2:辅助索引的高度;k:非叶子节点扇区个数。 二:索引结构 叶节点实际上是一个双向链表,而叶节点中的行数据是一个单向链…

    数据库 2023年5月24日
    079
  • Java绘图基础

    Graphics 绘图类 Graphic是一个抽象的画笔对象,可以在组件上绘制丰富多彩的几何图形和位图。Graphics类封装了Java支持的基本绘图操作所需的属性,主要包括 颜色…

    数据库 2023年6月16日
    073
  • 容器化 | 使用 Alpine 构建 Redis 镜像

    上一期我们介绍了几种常见的构建镜像方式,并给出了功能对比、决策树等作为选型参考。本期我们将演示如何使用 Alpine 构建一个 Redis 镜像。 Alpine 系统使用 apk …

    数据库 2023年5月24日
    087
  • [LeetCode]7. 整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: 321示例 2: 输入: -123输出: -321示例 3: 输入: 1…

    数据库 2023年6月9日
    069
  • CentOS7.2解决vsftpd启动失败,code=exited,status=2问题的几个方法参考

    【问题说明】重启vsftpd服务失败:[root@data ~]# systemctl restart vsftpdJob for vsftpd.service failed. S…

    数据库 2023年6月14日
    0321
  • CMU 15-445 Project 0 实现字典树

    原文链接:https://juejin.cn/post/7139572163371073543 项目准备 代码、手册 本文对应 2022 年的课程,Project 0 已经更新为实…

    数据库 2023年6月14日
    088
  • 数据库概述

    MySQL的启动、停止 启动: net start mysql80 停止: net stop mysql80 (PS:mysql80为Win注册到MySQL中的系统服务名称)* M…

    数据库 2023年6月16日
    0113
  • Python 3.10 is coming!

    看看Python 官网的文档 whatsnew,Python 3.10 已然距离我们越来越近了,然我们看看 Python 3.10 相较于 Python 3.9 有哪些改变吧 新特…

    数据库 2023年6月6日
    092
  • MySQL 主从同步延迟监控

    MySQL5.7和8.0支持通过 replication_applier_status 表获同步延迟时间,当从库出现延迟后,该表中的字段 REMAINING_DELAY 记录延迟秒…

    数据库 2023年6月11日
    090
  • 浏览器书签插件配置

    准备远程Git仓库(目前只支持Gitee) 登录后创建仓库(如没有账号请自行注册) 配置Token 进入设置页面配置私人令牌 新增一个令牌(权限) 保存好生成的令牌,此令牌后续无法…

    数据库 2023年6月9日
    073
  • 努力的去帮助他人

    天道运而无所积,故万物成;帝道运而无所积,故天下归;–庄子《天道篇》 知识分享才能成长,财富流动才能更多;努力的去帮助每一个人,自己也会收获更多的快乐;不要为生活琐事在…

    数据库 2023年6月16日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球