ToB企服应用市场:ToB评测及商务社交产业平台
标题:
API接口的请求参数要更名,如何保持代码可读性?
[打印本页]
作者:
玛卡巴卡的卡巴卡玛
时间:
2024-11-18 20:11
标题:
API接口的请求参数要更名,如何保持代码可读性?
接口参数名与步伐里界说的model属性名,是完全一致的吗?本文通过案例,来讲述他们之间的联系与区别。
1
我们会补贴系统对外暴露的获取收银台地址的API,相应参数是一个url地址,这个url地址包罗一个参数,就是我们的订单号。形如:http://***.com/#/pages/orderPay/index?orderNo=4d2b8e3f9a6c4e278b5e
对应到步伐里的springmvc接口,如下:
@RequestMapping Result pay(String orderNo);
复制代码
为系统安全起见,我们决定,把参数名orderNo重定名为一个混淆字符,如s。
接口步伐怎么改呢?easy,改成下面这样
@RequestMapping Result pay(String s);
复制代码
有没有意识到这么改有什么不对劲儿?
有的话,说明你比较靠谱。→
显然是可读性差呀!这意味着这个pay方法里的全部的orderNo都将变成s。对于阅读和维护这段代码的同砚,谁知道s是个什么鸟东西呢?
那么,该怎么调优我们的步伐呢?
你也许会想到,用@RequestParam 注解呀!
没错,你很棒。知识就是力量,你更懂对知识的运用。可以用@RequestParam 注解 。
@RequestMapping Result pay(@RequestParam("s") String orderNo);
复制代码
完事!
2
请允许我再提一个问题:如果这个pay方法的请求参数是一个对象,当如何应对这种变化呢?
《大话西游月光宝盒》中,周星驰为救莫文蔚开启月光宝盒无限穿越。这次,让我们重新开启本文。
3
我们会补贴系统对外暴露的获取收银台地址的API,相应参数是一个url地址。对应到步伐里的springmvc接口,如下:
@RequestMapping Result pay(OrderVO orderVO);
复制代码
此中,OrderVO界说如下:
@Data
class OrderVO { private String orderNo; private String io;}
复制代码
为系统安全起见,我们决定,把参数名orderNo参数重定名为一个混淆字符,如s。
步伐怎么改呢?easy,重定名OrderVO#orderNo 为 OrderVO#s 呗!
@Data
class OrderVO { private String s; private String io;}
复制代码
有没有意识到这么改有什么不对劲儿?
有意识的话,说明你比较靠谱。→
显然是可读性差呀!这意味着这个pay方法(已经可能存在的pay所调用的方法)里的全部的orderNo都将变成s。对于阅读和维护这段代码的同砚,谁知道s是个什么鸟东西呢?
那么,该怎么调优我们的步伐呢?
你也许会想到,可以利用Jackson做文章。
没错,你很棒。知识就是力量,你更懂对知识的运用。SpringMVC是利用Jackson进行数据的codec。我们正是利用Jackson的注解来改造。
@Data
class OrderVO { @JsonProperty("s") private String orderNo; private String io;}
复制代码
完事!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4