后端服务开发(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

相关文章
|
6天前
|
弹性计算 监控 负载均衡
|
6天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
4天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
2天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
2天前
|
存储 关系型数据库 Java
探索后端开发:从基础到进阶
【10月更文挑战第33天】在这篇文章中,我们将深入探讨后端开发的各个方面,包括基本概念、关键技术和最佳实践。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和启示。我们将通过代码示例来展示一些常见任务的实现方法,并分享一些实用的技巧和策略,帮助你提高后端开发的效率和质量。无论你是想学习新的编程语言还是想了解最新的后端技术趋势,这篇文章都会为你提供有益的指导和灵感。让我们一起开启后端开发的探索之旅吧!
|
3天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战####
【10月更文挑战第29天】 在当今快速发展的软件开发领域,微服务架构已成为构建高效、可扩展和易于维护应用程序的首选方案。本文探讨了微服务架构的核心概念、实施策略以及面临的主要挑战,旨在为开发者提供一份实用的指南,帮助他们在项目中成功应用微服务架构。通过具体案例分析,我们将深入了解如何克服服务划分、数据管理、通信机制等关键问题,以实现系统的高可用性和高性能。 --- ###
21 2
|
4天前
|
存储 JavaScript 前端开发
探索后端开发:从基础到进阶的旅程
【10月更文挑战第31天】本篇文章旨在通过浅显易懂的语言,带领读者了解后端开发的奥秘。我们将一起探讨后端开发的核心概念、常用技术栈,以及如何通过实践不断提升自己的后端技能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供一个清晰的学习路径和实用的建议。让我们一起踏上这段探索后端世界的旅程吧!
14 1
|
5天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
15 2
|
2天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
10 0
|
2天前
|
存储 Java 关系型数据库
探索后端开发:从基础到进阶的旅程
【10月更文挑战第33天】在这篇文章中,我们将一起踏上一段激动人心的旅程,深入探索后端开发的奥秘。我们将从最基本的概念开始,逐步深入,直到能够理解并应用高级后端技术。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的见解和知识。让我们一起开始这段旅程吧!

热门文章

最新文章