后端服务开发(2) | 学习笔记

简介: 快速学习 后端服务开发(2)

开发者学堂课程【基于STM32的端到端物联网全栈开发后端服务开发(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/574/detail/7948


后端服务开发(2)


目录:

一、后端项目例程

二、数据库的设计

三、使用 Navicat 建表

四、后端项目例程、结构

五、创建 Java

六、服务器可订阅的消息

七、后端服务器应用开发


一、后端项目例程

目标如下:

image.png

(通过 Navicat 建立数据库表)
[1]
接收来自阿里云 loT 平台推送的节点设备上报消息

[2]写入数据库(更新数据记录)
[3]
接收前端服务器的数据库查询操作,并返回对应信息

[4]接收前端服务器命令,转发给阿里云 loT 平台

完成如下图:

image.png

二、数据库的设计

和前端服务器的交互 API 定义

GET/api/v1/device/clearAlarm(设备报警状态取消)
GET/apiv1/device/listDeviceName(
查询所有设备名)
GET/api/v1/device/queryAlarmHistoryLogs(
查询一段报警数据)
GET/api/v1/device/queryDeviceProp(
获取设备属性)
GET/api/v1/device/queryDevicePropHistoryLogs(
查询一段时间温湿度数据)
GET/apilv1/device/setDeviceProperty(
修改设备报警阀值)

三个表格:

device_infoid
id
device_name
current_temperature

current_humidity

temp_threshold

alarm_status

last_alarm_date

last_online_date

connect_status

gmt_update

alarm_history_log
id
device_name

alarm_temperatur

etemp_threshold

gmt_create
device_prop_history_log

id
device_name
current_temperature

current_humidity

gmt_creat

 

三、使用 Navicat 建表

1、使用 Navicat 建立 MySQL 数据库,复制建表语句到 Navicat,并执行

2、分别建立三个表

device_prop_history_log记录设备温湿度值历史数据


四、后端项目例程、结构

项目结构:Java 文件

common:主要存放应用中常量,异常,工具类等基础类

dao:数据操作层,主要存放 Dao

service:主要存放业务处理类(service)
web:
提供 HTTP 接口供前端调用,同时也是工程启动入口 DeviceAdminApplication.java
其他辅助文件

1配置文件 @application.properties

2Mapper 文件

3Maven 工程配置文件 @pom.xml

4、数据库测试文件 @device-admin.sql

Maven 工程配置
打包方式:jar父工程:spring-boot-starter-parentSpring boot 的父依赖,当前项目就是 Spring boots 项目

依赖关系:

aliyun-java-sdk-core:阿里云 java 底层 SDK
aliyun-java-sdk-iot
:用户服务器调用云端 openAPI,以实现产品管理、设备管理、Topic 管理等功能(主要是下行操作)
iot-client-message;
用户服务器通过 HTTP/2通道,接收物联网平台推送过来的设备消息(主要是上行操作)

路径:src/main/resource/application.properties
对阿里云 IoT 平台访问的配置阿里云 loT 平台的账号信息
阿里云 IoT 平台访问区域信息
阿里云 loT 平台上要访问的产品信息

 

五、创建 Java

创建 Java 类和所建数据表结构一一对应

三个类 Vs.三个表

AlarmHistoryLog

Devicelnfo DevicePropHistoryLog
抽象出表结构和可操作的方法 Mapper 文件的使用:Mapper

接口 Vs.Mapper.xml 映射

1使用默认已经封装好的方法

2、手动映射:mapper.xml SQL 语句和 mappr.java 中的方法对应起来


六、服务器端订阅消息

服务端可直接订阅产品消息
登录阿里云 loT 平台/控制台设置
阿里云 loT 平台通过 HTTP/2通道进行消息流转
选择推送的消息类型

设备上报消息:所有具有发布权限的 topic

设备状态变化通知:上线、下线

设备生命周期变更:设备创建、删除等

HTTP/2 SDK
1
、提供身份验证、topic 订阅、消息发送、消息接收等能力

2、适用于平台和服务器间大量数据流转

登录阿里云 IoT 平台1控制台设置
选择推送的消息类型

1、设备上报消息:所有具有发布权限的 topic
2
、设备状态变化通知:上线、下线

3、设备生命周期变更:设备创建、删除等


七、后端服务器应用开发

创建 DeviceMessageRegister 类,实现 InitializingBean 接口;spring 初始化 bean 的时候,会自动调用afterPropertiesSet 方法
建立和阿里云 loT 平台的连接
基于用户的阿里云 AccessKey 进行身份认证
订阅主题
监听,通过 SDK 消息回调获得数据 messageIDtopicpayoadgenerateTimeqos

根据不同主题,操作数据库

连接前的身份认证

accessKey 即账号的 AccessKey ID
accessSecret
AccessKey ID 对应的 AccessKey Secret选择安全设置查看账号 ID
regionld
为所在物联网平台服务地域

服务器关心的 topic
设备状态上报

getDeviceStatusTopic()
/as/mqt/status/{pk}#

(
高级)设备属性上报

getDevicePropertyPostTopic()
/sys/{pk}/{dn}/thing/event/propety/post

(高级)设备事件上报
getDeviceEventPostTopic()
/sys/{k}{n)}thing/eventS(Is event. denifr)/post

设备生命周期上报

监听,设置消息接收接口
建立连接时, 需要提供消息接收接口,用于处理未设置回调的消息
根据不同主题,通过 service 层,

操作数据库

client.setMessageListener(topic.xxxxx(),new MessageCallback()

Web 层(接口→子类,实现抽象方法)→service 层(mapper 下面的方法)→dao

SQL 语句如下:afterPropertiesSet()
>deviceInforService.xx
>devicePropHistoryLogService.xxx
>alarmHistoryLogService.xxx
DeviceInforServielmpl.java
>devicelnforMapper.xxx
DevicePropHistoryLogServicelmpl.java

>devicePropHistoryLogMapper.xxx
AlarmHistoryLogServicelmpl.java
>alarmHistoryLogMapper.xxx

调用云端 openAPI,可进行产品管理、设备管理、topic 管理、数据流转规则设置、消息通信等
通过向服务端地址发送 HTTP(S)GET/POST 请求,按照 API 接口说明封装,进行 API 调用

API 功能列表,及调用方式 SDK 下载:aliyun-java-sdk-iot/
在项目中由 maven 负责依赖 jar 包的自动下载 SDK 的使用
初始化 SDK 客户端
封装 request
调用 getAcsResponse 发出 request 并收取 response
响应前端请求,查询数据库:web 层->
service 层->dao

相关文章
|
5月前
|
人工智能 Java API
后端开发必看:零代码实现存量服务改造成MCP服务
本文介绍如何通过 **Nacos** 和 **Higress** 实现存量 Spring Boot 服务的零代码改造,使其支持 MCP 协议,供 AI Agent 调用。全程无需修改业务代码,仅通过配置完成服务注册、协议转换与工具映射,显著降低改造成本,提升服务的可集成性与智能化能力。
1560 1
|
5月前
|
前端开发 Java 数据库连接
后端开发中的错误处理实践:原则与实战
在后端开发中,错误处理是保障系统稳定性的关键。本文介绍了错误分类、响应设计、统一处理机制及日志追踪等实践方法,帮助开发者提升系统的可维护性与排障效率,做到防患于未然。
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
514 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
7月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
464 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
存储 缓存 负载均衡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
432 6
|
8月前
|
前端开发 JavaScript 关系型数据库
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
614 5
2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
|
8月前
|
人工智能 小程序 NoSQL
【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
250 32
|
11月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
543 2
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
883 4

热门文章

最新文章