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

相关文章
|
30天前
|
存储 缓存 负载均衡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
54 4
|
9天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
92 18
|
21天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
66 3
|
1月前
|
存储 前端开发 Java
深入理解后端开发:从基础到高级
本文将带你走进后端开发的神秘世界,从基础概念到高级应用,一步步揭示后端开发的全貌。我们将通过代码示例,让你更好地理解和掌握后端开发的核心技能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
1月前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
43 1
|
1月前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
46 1
|
1月前
|
负载均衡 监控 API
后端开发中的微服务架构实践与挑战
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势和面临的挑战,并通过案例分析提出了相应的解决策略。微服务架构以其高度的可扩展性和灵活性,成为现代软件开发的重要趋势。然而,它同时也带来了服务间通信、数据一致性等问题。通过实际案例的剖析,本文旨在为开发者提供有效的微服务实施指导,以优化系统性能和用户体验。
|
2月前
|
Web App开发 开发框架 JavaScript
深入浅出Node.js后端开发
本文将带你领略Node.js的魅力,从基础概念到实践应用,一步步深入理解并掌握Node.js在后端开发中的运用。我们将通过实例学习如何搭建一个基本的Web服务,探讨Node.js的事件驱动和非阻塞I/O模型,以及如何利用其强大的生态系统进行高效的后端开发。无论你是前端开发者还是后端新手,这篇文章都会为你打开一扇通往全栈开发的大门。
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
本文将带领读者从零基础开始,一步步深入到Node.js后端开发的精髓。我们将通过通俗易懂的语言和实际代码示例,探索Node.js的强大功能及其在现代Web开发中的应用。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的见解和技巧,让你的后端开发技能更上一层楼。

热门文章

最新文章