建设网站审批手续,公司的门户网站模版,自建网站 好处,宁波网站优化服务B站小狂神-此博客的内容就是看了这个视频的总结#xff08;博主自己写的哦~并非转载#xff09; 视频链接-【狂神说】通俗易懂的阿里云短信业务实战教程#xff08;露脸#xff09; 您是否还在为别人的项目有短信功能自己的却没有#xff1f; 您是否还在为自己的项目没有短…B站小狂神-此博客的内容就是看了这个视频的总结博主自己写的哦~并非转载 视频链接-【狂神说】通俗易懂的阿里云短信业务实战教程露脸 您是否还在为别人的项目有短信功能自己的却没有 您是否还在为自己的项目没有短信功能逼格不够高而发愁 您是否想要简单了解下短信功能但网上的只有代码没有其他相关知识的介绍而发愁 … dont 担心了这篇博客是为了那些想简单入手下短信服务的老哥而准备的~~大佬勿喷 主要介绍下阿里云的一些用户操作直接用最高权限的accessKeyId和key密码也不现实是不是需要分不同的用户使用简单介绍下阿里云短信开通包括添加短信模板和签名决定短信发送什么是不是
您也可以点击目录跳转到您想看的部分去
文章目录1.了解阿里云用户权限操作(多图警告)2.开通阿里云短信服务添加短信模板添加签名3.编写测试代码★★★项目结构相关的配置文件controller,service层代码结果展示4.编写可复用的微服务接口暂时空着微服务还没学2331.了解阿里云用户权限操作(多图警告) 阿里云账号大家申请之后就可以使用阿里云的服务了我们一般都是通过授权码id密码的方式来使用阿里云服务的这次我们就用短信服务来做个小Demo先登录阿里云官网按着下面的图步骤来走。 创建一个用户组给他添加下短信权限Sms 然后用户也是差不多 创建一个用户给它添加到刚才那个组里面这样整个用户就只能使用短信服务了值得注意的是那个创建用户的时候会告诉accessKeyId和accessKeySecret记得把这两个保存下来特别是accessKeySecret只在你创建用户的时候显示忘了的话只能删除accessKeyId再新建一个了这两个是等会需要填到代码里面的。老哥们注意下了上面这些操作都是为了保护你的账号这个用户组只能使用短信服务的其他服务是是使用不了的。 这个授权码和密码有点类似快递小哥进你的小区你给他发个授权码和密码有一定的时效或者权限总比直接告诉他你的账号和密码要安全多了
2.开通阿里云短信服务 我们先在搜索框中输入短信服务背景就是我们点击回车之后的啦样子啦注意那个国内服务我们等下要设置的什么短信内容都是在这里设置的看那个签名管理模板管理。说一说为什么要设置这两个内容这两个决定你的短信发送是什么内容
添加短信模板 注意那个模板CODE必须审核通过才能用在代码中 再继续完成一些相关的内容补充点击提交就好了。
添加签名 之后就是签名管理也是一个类似的操作。这个签名就是说明你是哪个公司或者是什么项目的。我写学习之星是因为某个群里我的外号叫学习之星2333。注意这个签名也是必须通过了才能在代码中写“学习之星”的 这两个需要人工审核不过感觉快很多的大概20分钟左右吧。 3.编写测试代码★★★
项目结构
先大概看看项目结构吧不复杂的代码中我也会写一些注释方便大家理解。
相关的配置文件
pom.xml dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency!-- 阿里云短信依赖 --dependencygroupIdcom.aliyun/groupIdartifactIdaliyun-java-sdk-core/artifactIdversion4.1.0/version/dependency!--fastjson用来解析json--dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.60/version/dependency!-- 加入redis相关的依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdexclusionsexclusiongroupIdio.lettuce/groupIdartifactIdlettuce-core/artifactId/exclusion/exclusions/dependencydependencygroupIdredis.clients/groupIdartifactIdjedis/artifactId/dependency/dependenciesapplication.properties
// 服务端口
server.port8080// redis 相关的配置
spring.redis.host127.0.0.1
spring.redis.port6379controller,service层代码
service层 SendSms 接口
package com.example.sms.service;import org.springframework.stereotype.Service;import java.util.Map;public interface SendSms {/*** 发送短信验证码* param phoneNum 手机号* param templateCode 模板号* param code 验证码* return*/public boolean send (String phoneNum, String templateCode, MapString, Object code);
}SendSmsImpl 实现类 注意替换accessKeyIdaccessKeySecret还有request.putQueryParameter方法中的一些内容
/*** 发送短信验证码* param phoneNum 手机号* param templateCode 模板号* param code 验证码* return*/
Service
public class SendSmsImpl implements SendSms {Overridepublic boolean send(String phoneNum, String templateCode, MapString, Object code) {// 连接阿里云DefaultProfile profile DefaultProfile.getProfile(cn-hangzhou, 请替换为你的accessKeyId, 请替换为你的accessKeySecret);IAcsClient client new DefaultAcsClient(profile);// 构建请求CommonRequest request new CommonRequest();request.setMethod(MethodType.POST);// 这些内容不要动是人家阿里爸爸弄出来的咱不用管request.setDomain(dysmsapi.aliyuncs.com);request.setVersion(2017-05-25);// 自己的内容,此处 SendSms 为发送验证码request.setAction(SendSms);//自定义的参数(手机号验证码签名,模板! )//这是我的内容请结合你的情况修改为你的东西request.putQueryParameter( PhoneNumbers,phoneNum);request.putQueryParameter( SignName,学习之星);request.putQueryParameter( TemplateCode,SMS_189620774);request.putQueryParameter(TemplateParam, JSONObject.toJSONString(code));try {CommonResponse response client.getCommonResponse(request);// 在控制台上打印出返回信息System.out.println(response.getData());// 返回请求信息是否成功return response.getHttpResponse().isSuccess();} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}return false;}
}controller层 PS:像这种注解GetMapping(/send/{phone}) 浏览器URL对应的就是http://localhost:8080/send/123456 不要写成了什么 http://localhost:8080/send/phone15894621650 这样是接受不到的 该接口应该使用get方法访问不是post方法接口测试工具中要注意下 RestController
CrossOrigin //跨域支持
public class SmsApiController {Autowiredprivate SendSms sendSms;Autowiredprivate RedisTemplateString, String redisTemplate;GetMapping(/send/{phone})public String code(PathVariable(phone) String phone) {//调用发送方法模拟真实业务redisString code redisTemplate.opsForValue().get(phone);if (!StringUtils.isEmpty(code)) {return phone : code 已存在还没有过期;}// 生成验证码并且存储到 redis 中code UUID.randomUUID().toString().substring(0, 4);HashMapString, Object param new HashMap();param.put(code, code);boolean isSend sendSms.send(phone, SMS_189620774, param);if (isSend) {redisTemplate.opsForValue().set(phone, code, 600, TimeUnit.SECONDS);return phone : code 发送成功;} else {return 发送失败;}}
}
结果展示
接口测试工具效果 手机接收到的效果
4.编写可复用的微服务接口暂时空着微服务还没学233
结合你的具体业务吧233
谢谢您能看到结尾~ 原人生的路上你我共勉~