zoukankan      html  css  js  c++  java
  • 一个校验接口引发的思考我真的了解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。

    interface_design_004

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

    第二个问题

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

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

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

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

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

    interface_design_002

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

    interface_design_003

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

    结语

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

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

    2021-11-16的补充

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

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

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

    interface_design_005

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

    分层,抽象,高内聚,低耦合
  • 相关阅读:
    POJ3233 构造子矩阵+矩阵快速幂
    HDU4565-数学推导求递推公式+矩阵快速幂
    记录一个状压DP用到的骚操作
    POJ1273 最大流模板
    图论复习...
    2017-7 实训经验贴
    Polya定理应用实例
    直线,椭圆,三角形,折线分割平面问题
    hdu4801 PocketCube 2阶魔方
    1256:献给阿尔吉侬的花束
  • 原文地址:https://www.cnblogs.com/ZhangZiSheng001/p/15552479.html
Copyright © 2011-2022 走看看