相较于阿里大鱼的知名度,云片相对来说名声小一点,但是使用起来确实非常方便的:下面就i来介绍短信验证的另一种方法云片。
这是官网的地址:
关于如何去官网获取它的apikey ,以及生成短信发送的模板,大家可以更根据官方文档去做,在这里主要来解释它的用法:
下面是云片开发文档的地址:
https://www.yunpian.com/doc/zh_CN/scene/smsverify.html、
好了废话不多说了直接开始介绍使用:
我们这里一国内短信单挑验证为例,其余的接口类似,只是请求的条件不同而已:
首先对于云片的开发来说它的http请求头是:
Accept:application/json;charset=utf-8;
Content-Type:application/x-www-form-urlencoded;charset=utf-8;
请求的地址是:URL:https://sms.yunpian.com/v2/sms/single_send.json
在官网当中也指出了它的海外访问地址: us.yunpian.com
访问方式:POST
http支持:支持https 与 http 两种访问,建议使用https
首先来介绍一下它的请求参数:
有三个必须的参数是:apikey,mobile,text,用于发送请求:
下面来看具体发送的代码:
//获取短信验证码
exports.messagecheck = async (phoneNum) => {
console.log(phoneNum + "fefdfad");
//产生六位的随机验证码
var range = function (start, end) {
var array = [];
for (var i = start; i < end; ++i) array.push(i);
return array;
};
var randomstr = range(0, 6).map(function (x) {
return Math.floor(Math.random() * 10);
}).join('');
console.log(randomstr);
//发送请求
let getAccessUrl = `https://sms.yunpian.com/v2/sms/single_send.json`;
//这里需要注意的是它的请求参数不是以key--value的方式来设置的,而是将各个参数用&符号来连接起来形//成一个字符串,具体生成的验证码,将其拼接在字符串当中即可
//这里我们使用的发送函数是superagent这个函数有两种请求的方式后后面或罗列出来
let {text} = await superagent.post(getAccessUrl).send(
`apikey=${这里填入你自己申请的apikey}&mobile=${phoneNum}&text=【二货兔】您的验证码是${randomstr}如非本人操作,请忽略本短信`
);
//注意以下操作可加可不加,因为这个返回参数当中是没有验证码的,而我们发送验证码的函数是写
//在sevices当中的,所以在登录的时候是需要验证的,不管你是将信息放在redis缓存当中来共享,还是放
//在session当中去共享(如果是分布式项目建议放在redis当中因为session是只能在单台服务器上去共
//享数据的),是需要这个随机生成的验证码去校验的,所以需要将验证码返回以供操作,
//以下操作时将返回的text对象转换成为普通对象这样我们就可以通过"."的方式来给其添加属性,nodejs的方便之处就是在于,对于自己定义的一个变量,是可以通过"."的方式来为其添加属性的
var parse = JSON.parse(text);
//之后我们将生成的随机数作为转换后对象的一个属性
parse.radonmstr = randomstr;
//最后将整个个的参数返回
console.log("状态码" + parse.code+"======="+parse.msg +"====="+ parse.mobile+"====验证码是"+parse.radonmstr);
return randomstr;
}
以上就是整个发送请求的代码,在里面我么提到 superagent有两种请求的方式时post于get,
superagent会解析一些常用的格式给请求者,当前支持application/x-www-form-urlencoded,application/json,multipart/form-data.
res.body是解析后的内容对象,比如一个请求响应'{"user":{"name":"tobi"}}'字符串,res.body.user.name将会返回tobi,同样的,x-www-form-urlencoded格式的user[name]=tobi解析完的值,也是一样的.
nodejs客户端通过Formidable模块来支持multipart/form-data类型,当解析一个multipart响应时,res.files属性就可以用.
下面时一些常用的响应状态值:
res.accepted = 202 == status;
res.noContent = 204 == status || 1223 == status;
res.badRequest = 400 == status;
res.unauthorized = 401 == status;
res.notAcceptable = 406 == status;
res.notFound = 404 == status;
res.forbidden = 403 == status;
下面我们分别说一下两种请求方式的使用:
get请求:
//得到你要请求的url地址
let get_url = "https://api.weixin.qq.com/cgi-bin/user/get";
//使用get方式去发送请求,这里用的时query来街上后面的参数,使用的组合时get--query
let { text } = await superagent.get(get_url).query({
access_token: access_token,
next_openid: next_openid,
});
let res = JSON.parse(text);
post请求:
//同样先将需要请求的地址封装成一个变量
let api_url = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=" + access_token;
//利用post方式定义后面的参数,使用的组合时 post---send
let { text } = await superagent.post(api_url).send({
user_list: user_batch,
});
let res = JSON.parse(text);
具体是什么样的请求地址以及参数根据你所请求的接口文档而定;
好了上面就是云片的短信请求方式,大家可以对比大鱼的方式去学习,当然我这里也只是简单的使用,复杂的使用可以参口官方开发api;
版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qq_42112846