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

关于写“查看IT设备详细信息”接口的理解

背景

这两个星期,我一直在从事IT资产管理相关的工作。这个项目主要涉及建立三张表,并对这三张表进行操作。通常情况下,每张表的操作无非就是增、删、改、查,以及导入和导出。这六种操作基本涵盖了所有的常见接口需求。

如果你能熟练地编写这六种接口,那就意味着你已经掌握了基础技能,基本能够入门。实际上,所有的接口大体上都可以归为这几类,只是有些接口相对简单,有些则比较复杂。

简单的接口通常逻辑较为直接,而复杂的接口则在service层需要处理更多的业务逻辑,mapper层也需要编写更复杂的SQL语句。尽管如此,二者在本质上并没有太大区别。只要你能掌握这些基础操作,处理复杂接口也只是时间和经验的问题。

今天我先不讲这6个接口,我来讲讲我在今天工作中用到的,叫“查看” 的接口。其实查看也就是查询咯,基本可以把这个接口归为查询接口。

接口整体思路

这个接口的目的是通过设备ID查询出设备的所有信息,以及其对应的多个领用记录和多个维修记录。

编写接口

这个接口要完成的效果如下:

首先,我们需要明确查看接口的预期效果:

  1. “展示设备所有信息”是指从IT设备信息表中查询出所有字段。
  2. “展示设备维修记录”是指从IT维修记录表中查询出故障时间、发现方式和故障情况字段。
  3. “展示设备变更记录”是指从IT领用记录表中查询出原使用人和现使用人字段。

在理解了接口需要返回的内容后,我们还需要明确接口需要传入的参数。要查看某个IT设备的所有信息,我们需要知道这个IT设备的ID。只要有了设备ID,我们就能查询到该设备的所有信息。

为什么要传入设备ID呢?这是因为我们参考了一个类似的接口——查看设备详细信息的功能。那个接口传入的参数是设备ID,因此我们推断,这个查看接口也需要传入设备ID。这是我当时的思路。

当我把接口的输入输出都搞清楚之后,就可以开始编写接口的controller层了。那么,controller层的返回VO应该怎么写呢?自己一个个字段去写吗?这么多字段,如果都手动写,岂不是要累死了?当然不会自己写了,现在AI技术这么强大,可以让它来帮忙生成VO。我只需要把我想要实现的VO效果告诉AI,它就会帮我生成对应的代码。

AI告诉我要这样写:

那就这样写吧!

这样,controller层就搞定了。最后,controller层的代码大致如下:

接下来编写service层。

实际上,service层在这个场景下并不需要复杂的业务逻辑,因为这只是查看IT设备的详细信息。因此,service层的代码会相对简单。最后,service层的代码大致如下:

接下来是编写mapper层。mapper层的主要任务是编写SQL语句,直接与数据库交互。然而,编写这些SQL语句可能会很麻烦,尤其是当涉及到大量字段时,手动编写每个字段会非常耗时和容易出错。因此,我决定借助AI的帮助来完成这项工作。我会将我的需求告诉AI,让AI来生成相应的SQL语句。

不过后来我发现我的想法有些错误,因为一个设备可能有多个领用记录和多个维修记录,所以当我希望查询这些多个记录时,原先的SQL语句无法满足需求,甚至可能会报错。因此,我需要对这些SQL语句进行改进。依然是将我的需求告诉AI,让AI来生成适合的SQL语句。AI建议我这样写:

那我就照着AI的来写。如果编写完成后没有报错,那么mapper层就算完成了。然后,我会使用Postman进行测试,如果测试通过,证明这个接口就已经编写完成。

可以看到,通过Postman测试后,接口已经成功完成。

总结

总结一下,整体的思路是查询IT设备信息表的所有字段,IT领用记录表的某几个字段,以及IT维修记录表的某几个字段。由于一个设备可能对应多个领用记录和多个维修记录,这个接口的目的是通过设备ID查询出设备的所有信息,以及其对应的多个领用记录和多个维修记录。

心得

AI是一个十分强大的工具。在我之前使用AI的过程中,经常会提出一些很宽泛的问题,比如“请你帮我写一个查询设备所有信息的接口”。这种问题交给AI时,AI可能无法准确理解你的需求,给出的答案和你真正想要的结果差别很大。那么,应该如何提问呢?你需要给出具体的问题描述。

例如,你可以告诉AI你想要写一个VO,并详细描述这个VO的结构和预期效果;或者你想要编写一个SQL语句,那么你需要明确这个SQL语句的具体要求,比如要查询多少个字段,从多少张表中查询,以及表与表之间的关联关系。只有这样具体的问题,AI才能给出准确且有用的答案。


http://www.kler.cn/a/369727.html

相关文章:

  • 数据结构与算法之栈: LeetCode 739. 每日温度 (Ts版)
  • 【Julia】Julia预编译与外部库:从崩溃到完美集成
  • 如果我想设计一款复古风格的壁纸,应该选什么颜色?
  • CSAPP学习:前言
  • [EAI-023] FAST: Efficient Action Tokenization for Vision-Language-Action Models
  • LQ1052 Fibonacci斐波那契数列
  • PostgresSql 常用运维命令
  • 【大数据学习 | Zookeeper】Zookeeper的选举机制
  • 《使用Gin框架构建分布式应用》阅读笔记:p212-p233
  • 解锁AI潜力:揭秘高效人工智能数据准备的奥秘
  • 使用Claude新功能分析数据文件
  • 如何对网络设备进行监控:以监控易平台为例
  • 1FreeRTOS学习(队列、二值信号量、计数型信号量之间的相同点和不同点)
  • 前端实现卡片,展开/收起效果(vue/React/html)
  • 从零开始基于ROS-Noetic使用gazebo操控真实机械臂(附完整运行代码)
  • 论文笔记:TELLER 可解释的、可概括的、可控的假新闻检测的可信框架
  • <项目代码>YOLOv8 煤矸石识别<目标检测>
  • 在 macOS 上添加 hosts 文件解析的步骤
  • docker 安装部署 nginx
  • SPA和SSR
  • 构造+置换环,CF 1983D - Swap Dilemma
  • 计算机网络:网络层 —— IP数据报的发送和转发过程
  • php伪协议和move_uploaded_file、rename、copy等文件操作
  • 【python】OpenCV—WaterShed Algorithm(1)
  • 控制卸载/安装应用
  • Chromium HTML5 新的 Input 类型date 对应c++