后台仿京东商城接口设计缺陷吐槽篇

办公室刚battle完,忍不住来吐槽一下,先上图,再说需求和接口设计

个人理解的排序:不管是综合排序还是销量排序亦或者是价格升序降序,请求的参数类型应该是下图模式


class SortType {

    companion object{

        val TYPE_PRICE_UP = 1

        val TYPE_PRICE_DOWN = 2

        val TYPE_SALE_COUNT = 3

        val TYPE_SYNTHESIZE = 4
    }
    
}

fun getRequestBody(map:HashMap<String,Any>){
        map.apply { 
            put("type", TYPE_PRICE_DOWN)
        }
    }

事情起因呢,就是咱这后台设计接口,以为需求只有价格升序降序,所以定义一个boolean类型判断排序是升序还是降序,在博主核对接口的时候发现少了综合排序,在和产品确认需求点击综合排序没有弹出下拉框选项后,确定综合就一种排序方式,后台呢给接口设计有增加一种boolean类型判断排序是否未综合排序,后台的排序理解如下:

fun getRequestBody(map:HashMap<String,Any>){
        map.apply {
            put("是否是综合", "是")
            put("是否是降序","否")
        }
        
        when("是否是综合"){
            "是" ->{
                
            }
            "否" ->{
                when("是否是降序"){
                    "是" ->{

                    }
                    "否" ->{
                        
                    }
                }
            }
        }
    }

若干年以后呢,ios的哥们开发是接口传递的参数把是否为综合当成综合降序升序传递参数,这就导致android端和ios端显示排序不一致了,后台一看界面以为自己做了综合降序升序排序,一直认为自己没有任何问题,还闹心的很,估计是自己都忘了自己当初为什么要加这个参数了吧(牛逼的很咱也惹不起,咱就是不理会,跑来水一篇博客)

这个锅该怎么正确的甩呢,两部分:

1.点击综合排序时,ios传综合为false,价格排序为true/false,后台查询的是价格排序而非综合排序(后台以为查的是综合排序降序,自己都没看一眼自己写的代码张口就来)
2.如果一开始后台的接口设计都如我上面理解的一个type对应多个类型就不会有这个问题,当初我还多次要求后台修改接口参数,后台不想改,怎么简单怎么来,所以自己的锅自己背

再提一点,咱这后台的接口没法适应多变的需求,假如某一天需求增加口碑排序,评价排序,咱这后台要怎么写呢?!!肯定是boolean大法再来几个变量,汗…

咱这后台水平怎么样你们自己品,咱也不好说,咱也不敢问,怕打扰他开心的玩游戏刷剧!!咱是能避则避,锋芒过盛惹不起!!!

各位读者有何看法欢迎在下方评论区交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
通用接口实现类LinkJOS 扩展于:public class LinkJOS extends LinkOAuth2(LinkOAuth2 extends JspEasy) 构造函数 LinkJOS(HttpServletRequest request,HttpServletResponse response) 京东JOS接口访问函数 public String link2(String link,String method,Bag sys,Bag apps,String appSecret,String file,String FileField) 作用:访问京东JOS平台的所有接口 参数: String link,京东JOS平台接口访问地址,目前固定为:https://api.jd.com/routerjson String method,向京东JOS平台提交数据时的方法,需要应用级别参数时建议用POST方法,不需要时用GET(参见后边的实例) Bag sys,系统级别参数书包(一般只需在接口参数文件中放入接口方法即可,参见后边的实例) Bag apps,应用级别参数书包(在接口参数文件中放入必须的应用级别参数,若不需要应用级别参数时直接用new Bag(-1)构造一个空书包即可,参见后边的实例) String appSecret,应用证书中的App Secret,前边已经设置,固定用"@{pPage:app_secret}"即可 String file,调用上传文件接口上传文件(如图片)到京东JOS平台时的文件全名(含相对路径,如:images/logo.png),不是调用上传文件接口时为空字符串即可(参见后边的实例) String FileField,调用上传文件接口上传文件(如图片)到京东JOS平台时的字段名,配合前边的参数,不是调用上传文件接口时为空字符串即可(参见后边的实例) 返回为京东JOS平台接口对应的JSON格式的字符串 JSON文本解析方法 public void parseJson(String json) 作用:解析京东JOS平台接口返回的JSON格式的字符串,并根据内容生成N个对应的书包 参数:String json,京东JOS平台接口返回的JSON格式的字符串 根据JSON文本的内容在系统中生成N个书包,根书包名称为j0,下一层的josn文本内容生成的书包名称用上一层的Key放在上一层的书名中,下边用实例说明寻找对应书包的方法: 如店铺信息查询接口jingdong.vender.shop.query返回的json文本为 { "jingdong_vender_shop_query_responce": { "shop_jos_result": { "open_time": "", "shop_id": "", "category_main_name": "", "category_main": "", "vender_id": "", "brief": "", "logo_url": "", "shop_name": "" } } } 找出店铺信息书包名的方法如下 @{j0:jingdong_vender_shop_query_responce} @{@{pPage:bag}:shop_jos_result} 这时候的@{pPage:bag}即为需要的店铺信息书包名 具体用法请阅读下载包中的《京东卖家如何快速开发网店工具软件》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值