一个校验接口引发的思考–我真的了解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)

大家都在看

  • Java常用类解析

    包装类 包装类值基本数据类型对应的引用类型,包装类封装好的方法能够很方便的让我们操作基本数据类型而不需要自己再去编写不必要的代码。 基本数据类型 包装类 boolean Boole…

    数据库 2023年6月16日
    070
  • 符合标准的正常工作的对联广告(漂浮广告JS代码)

    符合标准的正常工作的对联广告JS代码(漂浮广告)。DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN…

    数据库 2023年6月11日
    080
  • MySQL的文件系统(Linux环境)

    /var/lib/mysql/ 可通过以下sql命令查看: mysql> show variables like ‘datadir’; +—————+–…

    数据库 2023年5月24日
    075
  • CentOS之—双网卡双IP双网关配置

    修改对应网卡的DNS的配置文件 <span class=”hljs-section”># vim /etc/resolv.conf</span> 修改以下内…

    数据库 2023年6月11日
    093
  • mysql范式

    mysql范式: mysql建表的规范格式 第一范式:保证每列的原子性(字段不能再分解) 第一种范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,则数据库满足第一…

    数据库 2023年5月24日
    095
  • MySQL select语句中where条件的提取过程

    select语句中where条件的提取过程 孔个个依然,在整理where条件提取过程时,发现中文互联网上关于这一块的知识要么是存在错误自相矛盾的,要么是版本过老,遂自己整理了一版。…

    数据库 2023年6月16日
    093
  • 图片防盗链

    如何避免别的网站直接通过本网站的url访问本网站资源 简单的防盗 我可以做到请求来的时候先看看当前请求是从哪个网站过来的如果是本网站那么正常访问如果是其他网站直接拒绝请求头里面有一…

    数据库 2023年6月14日
    084
  • Mysql 索引

    索引的目的是提高查询效率。 [En] The purpose of index is to improve query efficiency. 一 索引分类 1、普通索引 inde…

    数据库 2023年5月24日
    095
  • Redis SCAN命令

    获取指定前缀的key 需求描述: Redis中有大量以xxx开头的key,在不使用keys命令的情况下,如何快速获取这些前缀的key 解决方案: redis自带的scan命令可以解…

    数据库 2023年6月14日
    083
  • day42-反射01

    Java反射01 1.反射(reflection)机制 1.1反射机制问题 一个需求引出反射 请看下面问题: 根据配置文件 re.properties 指定信息,创建Cat对象并调…

    数据库 2023年6月11日
    0130
  • mybatis SelectKey解析

    1.selectKey介绍及作用 resultType:sql返回的java类型 statementType:STATEMENT|PREPARED|CALLABLE三种默认PREP…

    数据库 2023年5月24日
    091
  • Typora + PicGo + Gitee 解放你对图片的管理

    计算机环境准备 Typora PicGo nodejs Typora官网: https://typora.io/ PicGo官网: https://picgo.github.io/…

    数据库 2023年6月9日
    087
  • MySQL常用语句

    数据库设置 查看设置 `sql Original: https://www.cnblogs.com/1fengchen1/p/15781973.htmlAuthor: SonnyZ…

    数据库 2023年6月9日
    073
  • java实现有道翻译爬虫

    我的博文地址 https://www.cnblogs.com/lingdurebing/p/11618902.html 使用的库 1.commons-codec 主要是为了加密,可…

    数据库 2023年6月11日
    0104
  • 源码 | 为金融场景而生的数据类型:Numeric

    高日耀 资深数据库内核研发毕业于华中科技大学,喜欢研究主流数据库架构和源码,并长期从事分布式数据库内核研发。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信),…

    数据库 2023年5月24日
    0102
  • git本地分支推送至远程分支

    1、本地任意盘→新建文件夹,例:我新建文件夹名称是:E:\git 2、打开git文件夹,文件夹内鼠标右击选择 Git Bash Here 3、克隆远程分支到本地分支【远程分支移动到…

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