运营提供了一个用户列表,csv
的文件格式,需要给这批用户发优惠券。而线上环境已经有现成的接口,只需要构造参数、请求接口就可以实现。
我习惯的做法是维护一个job
目录,然后写一个执行脚本,不管是go
语言、还是shell
,读取文件内容,然后请求接口。比如说:
-- job
---- send_coupon.go
---- send_badge.go
针对这种处理模式,其实还可以直接在命令行写shell
执行,比上述的处理要便捷很多。shell
主要操作也是两步:
- 获取文件中有效的数据
- 请求接口
获取数据的方式真的挺多的,我比较常用的是awk
。比如,文件的格式如下:
姓名, uid
张三,1
Tony,2
要获取用户的uid
,只需要手动删除第一行(哈哈),然后执行:
# 将行按,分割,然后获取第二列
awk -F, '{print $2}' file.csv
然后就是使用curl
发起请求,以POST
请求为例,常规的请求方式:
curl -X POST http://remote.com/user/coupon -d "uid=1"
接下来,我们只需要将curl
命令中的1替换成awk
中的数据。连续处理数据的话,我们都使用管道符(|),但替换参数的话,需要使用xargs
命令,它有一个-I
属性,专门用来做这件事的。
awk -F, '{print $2}' file.csv | xargs -I {} curl -X POST http://remote.com/user/coupon -d "uid={}"
注:如果使用的是Mac
下的命令行,需要做转译
来源:oschina
链接:https://my.oschina.net/u/3017278/blog/3211561