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

相关文章
|
10天前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
9天前
|
JSON 前端开发 API
后端开发中的API设计与文档编写指南####
本文探讨了后端开发中API设计的重要性,并详细阐述了如何编写高效、可维护的API接口。通过实际案例分析,文章强调了清晰的API设计对于前后端分离项目的关键作用,以及良好的文档习惯如何促进团队协作和提升开发效率。 ####
|
11天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
29 4
|
10天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
11天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
13天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
13天前
|
存储 关系型数据库 Java
探索后端开发:从基础到进阶
【10月更文挑战第33天】在这篇文章中,我们将深入探讨后端开发的各个方面,包括基本概念、关键技术和最佳实践。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和启示。我们将通过代码示例来展示一些常见任务的实现方法,并分享一些实用的技巧和策略,帮助你提高后端开发的效率和质量。无论你是想学习新的编程语言还是想了解最新的后端技术趋势,这篇文章都会为你提供有益的指导和灵感。让我们一起开启后端开发的探索之旅吧!
|
8天前
|
缓存 前端开发 API
探索后端开发中的API设计原则
【10月更文挑战第37天】本文旨在引导读者理解API设计的核心理念,通过简明的语言和直观的示例,揭示如何构建高效、稳定且易于维护的后端接口。我们将深入浅出地探讨RESTful API的设计规范,并通过一个简易的代码样例,展示如何在实战中应用这些原则。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的参考和启示。
|
13天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
29 0
|
13天前
|
存储 Java 关系型数据库
探索后端开发:从基础到进阶的旅程
【10月更文挑战第33天】在这篇文章中,我们将一起踏上一段激动人心的旅程,深入探索后端开发的奥秘。我们将从最基本的概念开始,逐步深入,直到能够理解并应用高级后端技术。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的见解和知识。让我们一起开始这段旅程吧!

热门文章

最新文章