本节我们要真正的实现这个加密函数:
为了便于调试,我们先给普通接口调试函数 加入对它的调用:
(注意调用位置一定要放到 替换全局变量的后面!最好是在真正发送请求代码部分之前紧贴!)
如上图,这个函数最终会返回带了加密验签字段的url和body
然后,我们要耐心的做一个接口 用来调试用!
首先来看我们写的调试用的加密表达式:
注意,其中的time,我们会先检测是在url和body中存在这个字段,如果不存在,我们则用10位时间戳来表示,这个规则我们应该在一开始告知使用者,所以可以在说明文案中加入这一句:
然后是具体的接口:
注意,这个验签加密表达式一共需要三个变量,
token我放在了url里,userId我放在了body中,
然后开始正式写这个函数:
我们找到这个函数:views.py中
确认下要做的事:
- 用project_id 拿出 加密插入位置 和 加密表达式
- 根据加密表达式从url和body中拿出 需要用到的参数
- 组装成完整加密表达式并执行,生成加密字段key/value
- 根据加密插入位置 放到url或body中
- 返回加入后的url和body
第一步代码:
第二步代码:
我们先提取一下 表达式的key 和 字段,看看是否成功:
结果如下,不用管报错先,因为还没写完
可以看到 提取的很顺利
然后我们要从给的url和body中依次拿出这些变量,注意,如果提取失败就要先检测下,是不是time的,若是则启动预置时间函数。
(注意,这里我们之后可能会新增一些其他预置变量,所以大家注意下这里,以后可以根据需要扩充,不止有time一个预置变量哦~)
我们现在来思考一个问题,如何从url 中提取我们要的参数?
思路1: 给url用split解析,找出所有的key=value,然后直接取出来。
思路2:直接用正则,左边界是变量= ,右边界是&或结尾。
显然,从效率上来说,思路2明显要快n倍。因为这个函数是一个很底层的函数,我们必须保证它的执行速度,所以我们先尝试用思路2 解决!
注意这个正则写法,不要写错了哦~ 正则还不会用的小伙伴建议报名我的课程哦~
看看结果:
可以看到,成功取出来了这个数据。
好,本节课就到这里了。下节课继续吧.