当前位置: 首页 > news >正文

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

相关文章:

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

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…...

基于jenkins自动化部署PHP环境

实验环境 操作系统 IP地址 主机名 角色 CentOS7.5 192.168.147.141 git git服务器 CentOS7.5 192.168.147.142 Jenkins git客户端 jenkins服务器 CentOS7.5 192.168.147.143 web web服务器 具体环境配置见上一篇&#xff01; 准备git仓库 [rootgit ~]# su -…...

数据库表结构导出为word、html、markdown【转载,已解决,已验证,开源】

注&#xff1a;本文为gitcode代码验证&#xff0c;转载gitcode gitcode&#xff1a;https://gitcode.net/mirrors/pingfangushi/screw?utm_sourcecsdn_github_accelerator 整理数据库文档&#xff1a;https://mp.weixin.qq.com/s/Bo_U5_cl82hfQ6GmRs2vtA <!--数据库文档核…...

【计算机视觉|生成对抗】用于高保真自然图像合成的大规模GAN训练用于高保真自然图像合成的大规模GAN训练(BigGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Large Scale GAN Training for High Fidelity Natural Image Synthesis 链接&#xff1a;[1809.11096] Large Scale GAN Training for High Fidelity Natural Image Synthesis (arxiv.org…...

三维重建_体素重建_空间雕刻法/体素着色法

目录 1. 三角化和体素重建的区别 2. 空间雕刻法 空间雕刻法的一致性定义 空间雕刻法具体实现 基于八叉树的空间雕刻法具体实现​编辑 空间雕刻法效果展示 3. 体素着色法 体素着色法的缺点&#xff1a;不唯一性​编辑 体素着色法不唯一性解决措施​编辑 体素着色发实验环境与…...

4-redis哨兵搭建安装

1.先决条件 1.1.OS基础配置 CentOS为了能够正常安装redis,需要对CentOS进行常规的一些基础配置,主要有:关闭防火墙与selinux,设置主机名,配置虚拟机IP地址使其能够与外网ping通,配置IP地址与主机名映射,配置yum源。具体配置参见: Linux常规基础配置_小黑要上天的博客…...

架构评估-架构师之路(十二)

软件系统质量属性 软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。 质量属性 性能&#xff1a;指 系统的响应能力&#xff0c;如 响应时间&#xff0c;吞吐率。 设计策略&#xff1a;优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。 可靠…...

手写模拟SpringBoot核心流程(二):实现Tomcat和Jetty的切换

实现Tomcat和Jetty的切换 前言 上一篇文章我们聊到&#xff0c;SpringBoot中内置了web服务器&#xff0c;包括Tomcat、Jetty&#xff0c;并且实现了SpringBoot启动Tomcat的流程。 那么SpringBoot怎样自动切换成Jetty服务器呢&#xff1f; 接下来我们继续学习如何实现Tomcat…...

Python土力学与基础工程计算.PDF-土的三项组成

5.3 Python求解 Python 求解代码如下&#xff1a; 1. # 定义已知参数 2. G_s 2.7 # 比重 3. w 0.2 # 含水量 4. e 0.6 # 孔隙比 5. gamma_w 9.81 # 水的重度 6. 7. # 根据公式计算饱和度 8. S_r G_s * w / e 9. print("饱和度为", S_r) 10. 11.…...

危化安全生产信息化平台在煤化领域的应用

一、背景介绍 煤化工行业是一个集煤炭、石油、化工等多种产业于一体的综合性行业&#xff0c;其特点是工艺流程复杂、设备繁多、安全隐患大。近年来&#xff0c;随着煤化工行业的快速发展&#xff0c;安全生产问题日益凸显。为了有效提高危化安全生产水平&#xff0c;某煤化工…...

Linux(CentOS)运维脚本工具集合

使用说明 备份指定目录 # 备份指定目录文件到指定目录,备份文件名称为&#xff1a;备份目录最后一层目录"_"日期.tar.gz # 第一个参数&#xff1a;backdir 第二参数&#xff1a;备份文件保存目录 第三个参数&#xff1a;备份目录/文件 sh script.sh backdir /root/…...

【Java alibabahutool】JSON、Map、实体对象间的相互转换

首先要知道三者的互转关系&#xff0c;可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。 引入依赖 <!-- 阿里巴巴 JSON转换 以下二选一即可 没有去细研究两者…...

按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试

1.单元测试&#xff08;Unit Testing&#xff09; 单元测试&#xff0c;又称模块测试。对软件的组成单位进行测试&#xff0c;其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位&#xff1a;模块。 测试阶段&#xff1a;编码后或者编码前&#xff08;…...

【python】Leetcode(primer-dict-list)

文章目录 260. 只出现一次的数字 III&#xff08;字典 / 位运算&#xff09;136. 只出现一次的数字&#xff08;字典&#xff09;137. 只出现一次的数字 II&#xff08;字典&#xff09;169. 求众数&#xff08;字典&#xff09;229. 求众数 II&#xff08;字典&#xff09;200…...

网络安全(黑客)入门

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…...

在CSS中,盒模型中的padding、border、margin是什么意思?

在CSS中&#xff0c;盒模型&#xff08;Box Model&#xff09;是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子&#xff0c;这个盒子包括了内容&#xff08;content&#xff09;、内边距&#xff08;padding&#xff09;、边框&#xff08;border&a…...

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。...

【面试 反思】Retrofit源码与设计 7 连问

前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格&#xff0c;本质上只是对OkHttp进行封装&#xff0c;今天我们根据几个问题来进一步学习一下Retrofit的源码与设计思想。 1. 使用方法 直接看一下官方介绍的使用方法。 public final class S…...

flutter 雷达图

通过CustomPainter自定义雷达图 效果如下 主要代码 import package:flutter/material.dart; import dart:math; import dash_painter.dart; import model/charts_model.dart;class RadarChart extends StatelessWidget {final List<ChartModel> list;final double maxV…...

机器学习之损失函数(Loss Function)

损失函数&#xff08;Loss Function&#xff09;是机器学习和深度学习中的关键概念&#xff0c;它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要&#xff0c;不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失…...

多模态大模型微调为什么一上图文交错数据就开始视觉退化:从 Modality Collapse 到 Progressive Unfreeze 的工程实战

一、视觉退化并非个例 在多模态大模型&#xff08;VLM&#xff09;指令微调阶段&#xff0c;一个反复出现的现象是&#xff1a;模型经数万条图文交错样本训练后&#xff0c;面对纯视觉任务准确率反而下降&#xff0c;生成描述越来越偏向文本先验&#xff0c;甚至出现"看图…...

【Perplexity知识图谱查询实战指南】:20年专家亲授3大隐性陷阱与5步精准检索法

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity知识图谱查询的核心原理与能力边界 Perplexity 知识图谱查询并非传统关键词匹配&#xff0c;而是基于语义解析的多跳推理引擎。其核心依赖于三元组嵌入&#xff08;Triple Embedding&#xff09;与…...

LeetCode IPO问题题解

LeetCode IPO问题题解 题目描述 给定初始资本 w&#xff0c;最多完成 k 个项目。每个项目有利润和最低资本要求。找到能够获得的最大资本。 示例&#xff1a; 输入&#xff1a;capital [0,1,2,3], profits [1,2,3,5], k 2, w 0输出&#xff1a;4 解题思路 方法&#…...

如何通过技术优化提升百度网盘macOS版下载体验

如何通过技术优化提升百度网盘macOS版下载体验 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 对于macOS用户来说&#xff0c;百度网盘下载速度限制一直…...

第七章:LLM输出质量评估方法——从指标到流程

本章难度:★★★★☆ | 预计阅读时间:10分钟 你将学到:LLM评估的四大核心维度、三大评估框架对比、LLM-as-Judge的用法与局限、人工评估设计方法、红队测试流程、以及如何建立完整的评估体系 引言:为什么评估是AI产品的核心竞争力 你上线了一个RAG聊天机器人,工程师说&qu…...

从FPS相机到无人机控制:在Unity中实战Pitch、Yaw、Roll角的应用与调试技巧

从FPS相机到无人机控制&#xff1a;在Unity中实战Pitch、Yaw、Roll角的应用与调试技巧 在游戏开发中&#xff0c;相机控制和物体旋转是构建沉浸式体验的核心技术。无论是第一人称射击游戏中玩家视角的流畅转动&#xff0c;还是飞行模拟器中飞机的真实运动&#xff0c;都离不开对…...

避坑指南:在CentOS 7上部署泛微Ecology9 OA,我踩过的那些“内存不足”和“防火墙”的坑

CentOS 7部署泛微Ecology9 OA系统&#xff1a;从内存优化到防火墙配置的深度避坑指南 在Linux环境下部署企业级OA系统从来都不是一件简单的事情&#xff0c;尤其是像泛微Ecology9这样功能复杂的大型系统。表面上看&#xff0c;官方文档和网络上的教程似乎已经提供了完整的步骤&…...

三极管Ube到底变不变?从静态分析到动态放大,一张图帮你彻底搞懂

三极管Ube到底变不变&#xff1f;从静态分析到动态放大&#xff0c;一张图帮你彻底搞懂 刚接触三极管放大电路时&#xff0c;很多初学者都会被一个看似矛盾的现象困扰&#xff1a;教科书告诉我们三极管的Ube电压恒定为0.7V&#xff0c;但在分析动态放大过程时&#xff0c;又说U…...

告别DDPG训练不稳定!用SAC(软性演员-评论家)算法搞定复杂环境强化学习

告别DDPG训练不稳定&#xff01;用SAC&#xff08;软性演员-评论家&#xff09;算法搞定复杂环境强化学习 在机器人控制、自动驾驶仿真等连续控制任务中&#xff0c;强化学习算法的稳定性往往决定了项目成败。许多工程师都经历过这样的困境&#xff1a;使用DDPG&#xff08;深度…...

GC9A01驱动踩坑记:从供应商代码到自研优化,软件SPI这些细节别忽略

GC9A01驱动深度优化&#xff1a;软件SPI性能压榨实战手册 当240x240的LCD屏幕刷新一张图片需要整整1秒时&#xff0c;那种卡顿感会让任何开发者抓狂。上周调试GC9A01驱动时&#xff0c;我就遇到了这个噩梦——供应商提供的软件SPI驱动在40MHz主频下刷新率不足1FPS。经过72小时的…...