021-从零搭建微服务-短信服务(一)

news2025/4/8 20:08:44

写在最前

如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。

源码地址(后端):https://gitee.com/csps/mingyue

源码地址(前端):https://gitee.com/csps/mingyue-ui

文档地址:https://gitee.com/csps/mingyue/wikis

短信服务

短信服务(Short Message Service,简称SMS)是一种基于移动电话网络的通信方式,用于在移动设备之间传递短文本消息。这些消息通常被限制在一定的字符数内,通常为160个字符,尽管一些系统支持连接多条短信以形成较长的消息。短信服务是一种简便、广泛应用的通信手段,可用于个人、商业和技术领域。

以下是关于短信服务的一些关键特点:

  1. 文本消息: 短信是以纯文本形式发送的消息,通常不包含图像、音频或视频。它们主要用于传递简短的信息。
  2. 字符限制: 传统的SMS消息限制为160个字符,这是因为短信协议最初是为了适应电话信令系统而设计的。但是,通过技术手段,可以连接多条消息来传递更长的文本。
  3. 全球覆盖: 短信服务在全球范围内可用,只要设备连接到移动电话网络,就可以发送和接收短信。
  4. 可靠性: 短信通常被认为是一种相对可靠的通信方式,因为它们不依赖于互联网连接,而是使用移动电话网络基础设施。
  5. 用途广泛: 短信服务的用途多种多样,包括个人通信、商业用途、应用程序通知、验证码发送、紧急通知等。
  6. 商业应用: 许多企业使用短信服务向客户发送营销信息、交易通知和提醒。
  7. 技术整合: 开发人员可以使用短信服务的API将短信功能集成到他们的应用程序中,以便发送自动化消息。

国内常用短信服务商

有许多短信服务商为个人、企业和开发者提供短信发送和接收的服务。以下是一些在国内常用的短信服务商:

  1. 阿里云(Aliyun): 阿里云是阿里巴巴集团的云计算分支,提供各种云服务,包括短信服务。阿里云短信服务被广泛用于企业的营销、通知、验证等方面。
  2. 腾讯云(Tencent Cloud): 腾讯云是腾讯公司的云服务平台,也提供短信服务。腾讯云的短信服务适用于各种场景,包括用户验证、营销推广等。
  3. 容联云通讯(云片网): 容联云通讯(现在更多被称为云片网)是一家专注于短信服务的公司,提供丰富的短信发送和接收解决方案。
  4. 华信智原(253云通讯): 华信智原(现在更多被称为253云通讯)是国内领先的互联网通信服务提供商,为企业和开发者提供短信、语音、验证码等服务。
  5. 漫道云通讯: 漫道云通讯是一家提供全球范围内短信服务的公司,为企业和开发者提供可靠的通信解决方案。
  6. 百度云: 百度云也提供短信服务,供企业使用,帮助他们与用户保持联系、发送通知等。

短信服务

MingYue 短信服务将接入 阿里云(Aliyun)、腾讯云(Tencent Cloud)作为短信服务商!!!

新建短信服务

mingyue -> new module -> mingyue-sms

mingyue
└── mingyue-sms
		├── mingyue-sms-api
		└── mingyue-sms-biz
			└── MingYueSmsApplication (短信服务启动类)

mingyue-sms-biz 添加依赖

<dependencies>
      <!-- SpringCloud Alibaba Nacos -->
      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>

      <!-- SpringCloud Alibaba Nacos Config -->
      <dependency>
          <groupId>com.alibaba.cloud</groupId>
          <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
      </dependency>

      <!-- web容器 -->
      <dependency>
          <groupId>com.csp.mingyue</groupId>
          <artifactId>mingyue-common-web</artifactId>
      </dependency>

      <!-- 接口文档 -->
      <dependency>
          <groupId>com.csp.mingyue</groupId>
          <artifactId>mingyue-common-doc</artifactId>
      </dependency>

      <!-- 认证工具类 -->
      <dependency>
          <groupId>com.csp.mingyue</groupId>
          <artifactId>mingyue-common-security</artifactId>
      </dependency>
  </dependencies>

添加发送短信接口

添加一个测试接口 com.csp.mingyue.sms.controller.SmsController

/**
 * 短信服务模块
 * @author Strive
 * @date 2023/8/24 14:59
 */
@Slf4j
@Tag(name = "短信服务模块")
@Validated
@RestController
@RequestMapping("/sms")
@RequiredArgsConstructor
public class SmsController {

    /**
     * 短信验证码
     *
     * @param phone 用户手机号
     */
    @GetMapping("/code")
    @Operation(summary = "短信验证码",
            parameters = { @Parameter(name = "phone", description = "手机号", required = true) })
    public R<Void> smsCaptcha(@NotBlank(message = "手机号不能为空") String phone) {
        String code = "4321";
        log.info("手机[{}] 验证码短信发送 => {}", phone, code);
        return R.ok();
    }

}

Nacos 添加 mingyue-sms-biz.yml 配置文件

# 短信服务配置

Nacos 添加接口文档配置

# swagger配置
swagger:
    services:
    		## 配置开启的接口服务
        mingyue-sms-biz: sms

Nacos 添加网关转发配置

# 短信服务
- id: mingyue-sms-biz
  uri: lb://mingyue-sms-biz
  predicates:
      - Path=/sms/**
  filters:
      - StripPrefix=1

启动测试

http://mingyue-gateway:9100/v3/api-docs/sms 接口文档数据展示如下即可:

{
    "openapi": "3.0.1",
    "info": {
        "title": "MingYue 基础服务中心_接口文档",
        "description": "基础服务中心",
        "contact": {
            "name": "Strive",
            "url": "https://gitee.com/csps/mingyue",
            "email": "732171109@qq.com"
        },
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "http://mingyue-gateway:9100/sms"
        }
    ],
    "paths": {
        "/sms/code": {
            "get": {
                "tags": [
                    "短信服务模块"
                ],
                "summary": "短信验证码",
                "operationId": "smsCaptcha",
                "parameters": [
                    {
                        "name": "phone",
                        "in": "query",
                        "description": "手机号",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "*/*": {
                                "schema": {
                                    "$ref": "#/components/schemas/RVoid"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "RVoid": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "msg": {
                        "type": "string"
                    },
                    "data": {
                        "type": "object"
                    }
                },
                "description": "响应信息主体"
            }
        },
        "securitySchemes": {
            "apiKey": {
                "type": "apiKey",
                "name": "Authorization",
                "in": "header"
            }
        }
    }
}

小结

短信服务模块已经添加完成,后续将依次接入阿里云与腾讯云的短信服务,等接入短信服务后实现发送短信验证码登录!具体流程如下图:

image-20230824200420876

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/924207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git gui教程---第八篇 Git gui的使用 创建一个分支

一般情况下一个主分支下代码稳定的情况下会新建出一个分支&#xff0c;然后在分支上修改&#xff0c;修改完成稳定后再合并到主分支上。 或者几个人合作写一份代码&#xff0c;每个人各一个分支&#xff0c;测试稳定再合并到主分支上。 在git gui选择菜单栏“分支”&#xff0…

centos7安装hadoop 单机版

1.解压 &#xff08;1&#xff09;将hadoop压缩包复制到/opt/software路径下 &#xff08;2&#xff09;解压hadoop到/opt/module目录下 [rootkb135 software]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ &#xff08;3&#xff09;修改hadoop属主和属组 [rootkb135 m…

VirtualBox虚拟机安装Centos7详细教程图解

一、前期准备工作&#xff1a; 1、虚拟机下载 VirtualBox版本&#xff1a;7.0.6 下载 VirtualBox 的下载页面&#xff1a;https://www.virtualbox.org/wiki/Downloads VMWare 虚拟机软件&#xff08;收费的&#xff0c;要使用请购买正版软件&#xff09;的官网&#xff1a;…

Springboot中sharding-jdbc的API模式并使用自定义算法

Springboot中sharding-jdbc的API模式并使用自定义算法 可配合AbstractRoutingData使用切换数据源 程序用到了AbstractRoutingData来切换数据源&#xff08;数据源是自定义的格式编写并没有用springboot的自动装配的格式写&#xff09;&#xff0c;但是又用到sharding-jdbc进行…

pycharm添加虚拟环境以及虚拟环境安装pytorch

file、settings、interpreter、add interpreter、add local interpreter 记住不要勾选inherit&#xff0c;不然会把主环境的东西继承到虚拟环境。 创建前可以先点existing看看有没有已经建好的虚拟环境 有的时候pycharm有问题&#xff0c;创建了虚拟环境没有显示。找一个.py文…

交通网络分析性能再升级,SuperMap iServer新增开启SSC分析模型

导语 SSC分析模型&#xff0c;全名SuperMap Short Cut&#xff0c;底层采用Contraction Hierarchies&#xff08;简称CH&#xff09;算法&#xff0c;该算法旨在通过对图形进行预处理和优化来降低最佳路径分析的时间复杂度。SuperMap iServer 11i&#xff08;2023&#xff09;&…

scikit-learn中OneHotEncoder用法

One-Hot编码&#xff0c;又称为一位有效编码&#xff0c;是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值&#xff0c;然后&#xff0c;每个整数值被表示为二进制向量&#xff0c;将整数索引标记为1&#xff0c;其余都标为0。 OneHotEncoder()常用参数解释 …

【Winform学习笔记(十)】TextBox文本框控件 光标定位到文本末尾的方法

TextBox文本框控件 光标定位到文本末尾的方法 前言正文1、具体代码2、使用示例 前言 本文中主要介绍实现 TextBox 文本框控件的光标定位到文本末尾的方法. 正文 1、具体代码 /// <summary> /// TextBox文本框控件 光标定位到文本末尾的方法 /// </summary> ///…

next.js报错点

next.js报错点 1.类型“{ children: ReactNode; }”与类型“IntrinsicAttributes”不具有相同的属性。2. 不能将类型“void[]”分配给类型“ReactNode”&#xff1f;3.useRouter only works in Client Components. Add the "use client" directive at the top of the…

IDEA的maven想显示层级关系,而非平级

新版和旧版的IDEA的位置不一样&#xff0c;2023.2.1的版本在右上角的“” 这个位置 如图所示&#xff1a; 然后点击按模块分组&#xff1a;

[Stable Diffusion教程] 第一课 原理解析+配置需求+应用安装+基本步骤

第一课 原理解析配置需求应用安装基本步骤 本次内容记录来源于B站的一个视频 以下是自己安装过程中整理的问题及解决方法&#xff1a; 问题&#xff1a;stable-diffusion-webui启动No Python at ‘C:\xxx\xxx\python.exe‘ 解答&#xff1a;打开webui.bat 把 if not de…

从零开始的自动化测试框架——Web篇01

Selenium 谈到web自动化&#xff0c;逃不开的一定会是Selenium。这是最为主流&#xff0c;也是最广为人知的一项web自动化产物。但目前业内web自动化其实主要分为以下方向&#xff1a; Selenium&#xff0c;核心主流自动化技术&#xff0c;功能齐全&#xff0c;一般是搭配web…

【算法日志】动态规划刷题:01背包问题,多重背包问题(day37,day38)

代码随想录刷题60Day 目录 前言 目标和&#xff08;01背包&#xff09; 一和零&#xff08;01背包&#xff09; 零钱兑换&#xff08;多重背包&#xff09; 排列总和&#xff08;多重背包&#xff09; 前言 这两天都是背包问题&#xff0c;其中的01背包的一些应用问题需要…

迈步从头越——同为科技(TOWE)22周年庆典活动圆满举行

8月23日&#xff0c;同为科技&#xff08;TOWE&#xff09;迎来公司成立22周年纪念日&#xff0c;这是属于TOWE品牌的又一里程碑时刻。从2001到2023&#xff0c;从产品到品牌&#xff0c;从技术到服务&#xff0c;同为科技&#xff08;TOWE&#xff09;始终秉承着专注于终端设备…

电子合同9问9答,君子签为您答疑解惑

随着互联网的发展&#xff0c;人们交易行为的改变、电子合同的推广&#xff0c;买卖合同、租房合同、采购合同、劳动合同、招投标文件等都开始在线上签署。签署过程中&#xff0c;君子签针对大家的一些疑虑&#xff0c;整理了相关解答。 1、 签电子合同时&#xff0c;如何确…

MMEdu库的下载和安装(Python版)

为保证程序的顺利运行&#xff0c;这里提供MMEdu库的下载安装包。 OpenXLabEdu开源资源&#xff1a;OpenXLabEdu帮助文档 — OpenXLabEdu 文档 现MMEdu一键安装包已升级为XEdu一键安装包&#xff0c;下文提到的MMEdu文件&#xff0c;应理解为XEdu一键安装包。 第一步&#x…

融合算法综述

融合算法 前言一、概念二、原理三、融合的先决条件四、融合分类4.1、前融合和后融合4.2 、数据级融合、特征级融合和决策级融合 五、典型融合算法 多传感器信息融合&#xff08;Multi-sensor Information Fusion,MSIF&#xff09;&#xff1a;利用计算机技术将来自多传感器或多…

小红书旅游种草笔记:如何打造爆款内容,吸引万千粉丝?

随着社交媒体的飞速发展&#xff0c;小红书作为国内知名的分享平台&#xff0c;已经成为越来越多人展示生活、交流心得的阵地。在众多分类中&#xff0c;旅游种草笔记尤为热门&#xff0c;吸引了大量用户关注。那么&#xff0c;如何在这片竞争激烈的红海中&#xff0c;打造出爆…

Spring Boot:让你轻松掌握自动装配的奥秘

Spring Boot是基于Spring框架开发的一种应用框架&#xff0c;它通过自动装配机制&#xff0c;大大简化了Spring应用的开发和部署&#xff0c;使开发者可以更加专注于业务逻辑的实现&#xff0c;而无需过多关注Bean的实例化和装配过程。本文将从以下几个方面介绍Spring Boot的自…

计算机竞赛 基于RSSI的室内wifi定位系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; wifi室内定位系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;…