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

写在最前

如果这个项目让你有所收获,记得 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-bizuri: lb://mingyue-sms-bizpredicates:- 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.hqwc.cn/news/81776.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis持久化机制

为什么Redis会有持久化机制&#xff1a; Redis 是内存数据库&#xff0c;如果不将内存中的数据库状态保存到磁盘&#xff0c;那么一旦如果Redis服务器挂了&#xff0c;服务器中的数据就会丢失。所以 Redis 提供了持久化功能&#xff01; Redis有两种持久化方式&#xff08;RDB&…

文件服务器实现方式汇总

hello&#xff0c;伙伴们&#xff0c;大家好&#xff0c;今天这一期shigen来给大家推荐几款可以一键实现文件浏览器的工具&#xff0c;让你轻松的实现文件服务器和内网的文件传输、预览。 基于node 本次推荐的是http-server&#xff0c; 它的githuab地址是&#xff1a;http-s…

Android项目如何上传Gitee仓库

前言 最近Android项目比较多&#xff0c;我都是把Android项目上传到Gitee中去&#xff0c;GitHub的话我用的少&#xff0c;可能我还是更喜欢Gitee吧&#xff0c;毕竟Gitee仓库用起来更加方便 一. 创建Gitee仓库 1. 先创建一个Gitee账号&#xff0c;然后登录上去 2. 创建Androi…

设计模式原则及分类

一、概念 设计模式&#xff1a;&#xff08;Design pattern&#xff09;是前辈们对代码开发经验的总结&#xff0c;是解决特定问题的一系列套路。用来提高代码可复用性、可维护性、可读性、稳健性以及安全性。 二、设计模式原则&#xff1a; 单一职责原则&#xff08;Single …

《Linux从练气到飞升》No.17 进程创建

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

ROS2 学习(五)接口,动作

接口 通信双方统一规定好接口。比如图像 img&#xff0c;控制运动的线速度和角速度…… 我们也不用了解具体实现&#xff0c;基本就是了解接口会去用就行。 $ ros2 interface list # 展示所有 interfaces $ ros2 interface show ... # 显示具体一个 interface $ ros2 package…

IBM Spectrum LSF License Scheduler

LSF License Scheduler 提供了两个版本: Basic Edition 和 Standard Edition。 LSF License Scheduler Basic Edition 随附于 LSF Standard Edition 和 Advanced Edition &#xff0c;并非旨在应用有关如何在集群或项目之间共享许可证的策略。 相反&#xff0c; LSF License S…

Mr. Cappuccino的第64杯咖啡——Spring循环依赖问题

Spring循环依赖问题 什么是循环依赖问题示例项目结构项目代码运行结果 Async注解导致的问题使用Lazy注解解决Async注解导致的问题开启Aop使用代理对象示例项目结构项目代码运行结果 Spring是如何解决循环依赖问题的原理源码解读 什么情况下Spring无法解决循环依赖问题 什么是循…

生成式人工智能的潜在有害影响与未来之路(三)

产品责任法的潜在适用 背景和风险 产品责任是整个二十世纪发展起来的一个法律领域&#xff0c;旨在应对大规模生产的产品可能对社会造成的伤害。这一法律领域侧重于三个主要危害&#xff1a;设计缺陷的产品、制造缺陷的产品和营销缺陷的产品。产品责任法的特点有两个要素&…

Windows用户如何安装Cpolar

目录 概述 什么是cpolar&#xff1f; cpolar可以用在哪些场景&#xff1f; 1. 注册cpolar帐号 1.1 访问官网站点 2. 下载Windows版本cpolar客户端 2.1 下载并安装 2.2 安装完验证 3. token认证 3.1 将token值保存到默认的配置文件中 3.2 创建一个随机url隧道&#x…

Unity - MenuItem特性

MenuItem(string itemName, bool isValidateFunction, int priority) 参数1&#xff1a;菜单名 参数2&#xff1a;是否使用自定义条件控制菜单项是否可点击&#xff0c;默认为false&#xff0c;一般不赋值&#xff0c;需要用的话需要定义两个MenuItem MenuItem 1 : 自定义条件…

Spring Cloud Alibaba-Sentinel--服务容错

1 高并发带来的问题 在微服务架构中&#xff0c;我们将业务拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff0c;但是由于网络 原因或者自身的原因&#xff0c;服务并不能保证服务的100%可用&#xff0c;如果单个服务出现问题&#xff0c;调用这个服务就会出…