Spring boot 实战阿里云短信服务 微服务

前提工作:

1、注册阿里云账号
2、开通短信服务
3、账号需要充值一点金额, 短信服务是收费的
4、学习官方文档

一、注册阿里云账号

自己注册, 略

二、开通短信服务

1、登陆阿里云控制台, 搜索短信服务
在这里插入图片描述
2、开通短信服务

我这里已经开通过了, 第一次进入会提示开通服务, 点击开通即可。

在这里插入图片描述
3、学习官方文档
官方文档是我们学习新技术最好的参考资料, 这里会给出所有的样例, 以及向我们详细的介绍这项技术。 (好多技术文档都是英文的, 阅读起来比较费劲, 直接就把一部分同学劝退了, 好在阿里云是国产。。。)找到文档, 之后就开始阅读把

链接:

https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11186623.6.558.508715ecm4kLnC

点击帮助文档, 哇塞 , 这么全!新手必看, 1 、2 、 3、4 还担心学不会嘛!
在这里插入图片描述

点击第一步

阅读步骤后, 我们发现获取 AccessKey、 和创建模板签名是管加你步骤, 熟悉使用第三方服务的同学对AccessKey都比较了解了, 它就是相当于我们的账号, 还有一个对应的密码,我们在编码的时候不可能扫码登陆阿里云把, 不现实, 所有就有了替代产品, AccessKey, 这个AccessKey去自己的阿里云控制台就可以获取到了。在这里插入图片描述

获取 AccessKey

自己点击获取, 一定要注意保密。

在这里插入图片描述

创建短信模板和签名

先分析一波短信验证码, 这个每天见, 啊啊啊哈哈哈,
签名:

【 短信签名, 一般公司的名字, 自己平台的名字, 官方点的】

模板:

就是你具体要发送的内容了
在这里插入图片描述

了解之后, 就开始创建把, 返回到我们的短信控制台, 点击创建

在这里插入图片描述

1、添加签名

注意要正式一点, 我已经添加过一个了, 不可以添加了。。。。
在这里插入图片描述

2、添加模板

依旧傻瓜式操作, 依次填写内容,开始申请。
在这里插入图片描述

成功界面如下:

开始快乐编码把!
在这里插入图片描述

编写微服务

1、学习官方 SDK
2、编码, 微服务

一、学习官方SDK

我们想要的东西, 在控制台首页全部都有!!!!
在这里插入图片描述

点击进去

你会发现, 直接就有生成的代码, 没错!!!阿里就是这么强大!!!,添写必要的参数 , Run !!!
在这里插入图片描述

实例:

在这里插入图片描述

结果:

哈哈哈, 激动吗, 生活中的验证码就是这样发类 ,简单把

在这里插入图片描述

现在我们已经完成了简单的发送验证码了, 接下来就是编写微服务。

二、编写微服务

1、导入依赖
2、复制代码

就是这么真实, 复制代码!!!

点击 SDK使用说明

https://help.aliyun.com/document_detail/66496.html?spm=a2c1g.8271268.10000.132.772fdf25o9SfBZ

导入依赖

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

复制代码

    @Test
    void contextLoads() {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", " ", " ");
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        // 不能修改
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");
        // 自己设置
        request.putQueryParameter("PhoneNumbers", "  ");
        request.putQueryParameter("SignName", "  ");
        request.putQueryParameter("TemplateCode", "  ");
        HashMap<Object, Object> map = new HashMap<>();
        map.put("code", "1321");
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }

    }

填写你的信息, 即可测试!!!

三、集成 redis , 成为 微服务, 我们架构中的一个小模块!!!

1、配置文件

spring.redis.port=6379
spring.redis.host=127.0.0.1
spring.redis.password=123456

2、接口

public interface sendMsg {
    boolean send(String phone, String templatecode, HashMap<String, Object> map);
}

3、实现

    @Override
    public boolean send(String phone, String templatecode, HashMap<String, Object> map) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", " ", " ");
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        // 不能修改
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");
        // 自己设置
        request.putQueryParameter("PhoneNumbers", phone);
        request.putQueryParameter("SignName", " ");
        request.putQueryParameter("TemplateCode", templatecode);
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));

        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            return true;
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return false;
    }

4、Controller

 @Autowired
    sendMsg sendMsg;

    @Autowired
    RedisTemplate<String, String> redisTemplate;

    @GetMapping("/send/{phone}")
    public String code(@PathVariable("phone") String phone) {

        String code = redisTemplate.opsForValue().get(phone);
        if (!StringUtils.isEmpty(code)) {
            return phone + ":" + code + "已经存在";
        }

        code = UUID.randomUUID().toString().substring(0, 4);
        HashMap<String, Object> param = new HashMap<>();
        param.put("code", code);

        boolean issend = sendMsg.send(phone, " ", param);

        if(issend) {
            redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.SECONDS);
            return phone + ":" + code + "发送成功";
        }else{
            return phone + ":" + code + "发送失败";
        }

    }

Nice !!!
提示: 短信服务是收费的, 不过阿里已经做了防止盗刷。(代码里面也做了处理)

小结

集成第三方服务其实仔细阅读官方文档即可, 导入相应的依赖, 直接把实例代码拿过来用就行了, 超级方便快捷,简直就是 CV工程师的快乐源泉啊。

最最重要!!!学习自:bilibili 狂神说java (公众号同名)

视频链接, 欢迎学习!!!

https://www.bilibili.com/video/BV1c64y1M7qN
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值