B063-基础环境-后端环境 Lombok Restful postman swagger

news2024/11/26 9:58:04

目录

      • 项目介绍
      • 需求分析
      • 项目架构
        • 项目技术架构
        • 前后端分离
        • 前后端分离开发模式
        • 前后端分离优缺点
      • 后端项目搭建-部门模块
        • 项目端口规划
        • 创建SpringBoot项目流程
        • 整合SSM
          • 引用属性传值
        • Lombok
        • Restful风格
        • Postman接口测试
        • swagger接口规范
        • 其他

项目介绍

本项目是一个(Online To Offline)以宠物为核心打造的宠物乐园o2o项目。随着生活质量提供,人们不再满足简单物质生活,还追求更高层次精神生活。很多人愿意有养宠物意愿,愿意为宠物消费,正是基于这种场景,我们才开发了这个项目。首先让用户领养宠物,然后针对用户的宠物提供上门洗澡,美容,寄养,购买商品,宠物百科等综合服务平台。由用户下单,平台统一分派给线下门店上门服务。平台除了提供针对普通用户的基本需求功能,支持商家入驻,合作加盟,扩展线下门店渠道。

Online To Offline:线上线下,通过互联网手段挖掘机会,最终要到线下消费。

领养宠物,上门服务,购买商品,信息百科,
商家入驻,合作加盟,

需求分析

在这里插入图片描述
有了业务之后将业务抽象成表是关键
需求分析 需求设计(项目架构)是最难的,
-> 根据需求拆分业务表,根据表搭建框架,采用技术。
-> 写代码不难,难的是分析整个业务架构
每个模块和数据库表对应

项目架构

项目技术架构

在这里插入图片描述

后端架构:        springboot+ ssm+ 
				echart+ quartz+			
				Javaemail+ 
				Easypoi+redis

前端架构:        vue技术栈:nodejs npm webpack vue vue-cli elementui

服务器:         linux+nginx+docker
数据存储:        mysql +redis+fastdfs
第三方登录       微信 微博 QQ
第三方支付       支付宝扫描支付
第三方短信接口    中国网建

echart:做报表的
Easypoi:导入导出报表
docker:专门用来运行进程(tomcat)的容器
fastdfs:分布式文件存储系统,文件上传后会返回路径,数据库只保存路径,前端通过后端数据库地址自己去访问fastDFS里的图片

前后端分离

什么是前后端分离
前后端分离并不只是开发模式,而是web应用的一种架构模式。在开发阶段,前后端工程师约定好数据交互接口,实现并行架构,开发和测试;在运行阶段前后端分离模式需要对web应用进行分别部署,前后端之前使用HTTP或者其他协议进行交互请求。

交互形式
在前后端分离架构中,后端只需要负责按照约定的数据格式向前端提供可调用的API服务即可。前后端之间通过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,页面跳转,最终返回给浏览器。

代码组织方式
前后端代码库分离,前端代码中有可以进行Mock测试(通过构造虚拟测试对象以简化测试环境的方法)的伪后端,能支持前端的独立开发和测试。而后端代码中除了功能实现外,还有着详细的测试用例,以保证API的可用性,降低集成风险。

前后端分离开发模式

1.接口先行
大公司,能力要求高
因为写接口是要把所有的业务流都跑通都想清楚,数据库表也设计好了,一般由架构师或项目经理来写。

2.后端先行
能力要求低,小公司
目前99%公司的开发模式

前后端分离优缺点

优点:
分工明确,专业的人做专业的事情。
专业可以做出炫丽优美界面
人员培养更加专业化,精确化
缺点:
成本提高,人员多。
项目管理难度也提高,前后端都要管,协调他们之间交流。

它是趋势,移动互联要求必须有移动端,需要专业前端人员,好多公司都做前后端分离。

后端项目搭建-部门模块

项目端口规划

在这里插入图片描述
如果都在不同的机器上就不用分端口

创建SpringBoot项目流程

0.设置默认Settring–>maven
0.创建普通maven项目

1.导包 < parent >
2.启动类
3.直接测试

整合SSM

1.导包 mybatis的依赖包、数据库驱动包、jdbc
2.包目录结构
3.yml
4.mapper接口扫描 -> 启动类上
5.启动测试

6.写代码
表&实体 -> query -> mapper接口 - mapper.xml -> service -> 测试 -> controller

tips:service接口名右键可直接生成测试

引用属性传值

manager_id 对应 Employee 表的一条记录
新建属性manager与实体类Employee

@Data
public class Department {

    private Long id;
    //部门编号
    private String sn;
    private String name;
    //部门层级
    private String dirPath;
    private Integer state;

    private Long manager_id;
    /*通过对象引用表明关系*/
    private Employee manager;

    private Long parent_id;
    private Department parent;
}
@Data
public class Employee {

    private Long id;
}

manager_id 换成 manager.id

    <insert id="save">
        INSERT INTO t_department (
            sn,
            name,
            dirPath,
            state,
            manager_id,
            parent_id
        ) VALUES (
            #{sn},
            #{name},
            #{dirPath},
            #{state},
            #{manager.id},
            #{parent.id}
        )
    </insert>

测试

    @Test
    public void add() {
        Department department = departmentService.getById(45l);
        department.setId(null);
        department.setName("mingfeng");
        Employee employee = new Employee();
        employee.setId(329L);
        /*引用属性传值*/
        department.setManager(employee);
        departmentService.add(department);
    }

    @Test
    public void update() {
        Department department = departmentService.getById(1l);
        department.setName("mingfeng");
        Employee employee = new Employee();
        employee.setId(328L);
        /*引用属性传值*/
        department.setManager(employee);
        departmentService.update(department);
    }

Lombok

见文档

Restful风格

文档+笔记
@PutMapping      //新增或修改
@DeleteMapping(“/{id}”)  //删除
@GetMapping(“/{id}”)    //通过id查询
@GetMapping       // getAll 查询所有
@PostMapping     //分页查询

使用花括号来占位   @GetMapping(“/{id}”)
然后参数中使用:   @PathVariable(“id”)来取值
@RequestBody 接收对象参数,从请求体中拿数据,因为请求体没有大小限制

@RestController//我们只会前端json数据
@RequestMapping("/department")
public class DepartmentController {
    
	//查询一条数据  @GetMapping("")
    //{id}  使用花括号来占位  参数中使用:@PathVariable("id")来取值
    @GetMapping("/{id}")  //http://localhost:8080/department/1
    public Department getById(@PathVariable("id") Long id){
        return departmentService.getById(id);
    }

Postman接口测试

浏览器默认是get请求,因此需要postman帮助测试接口
+文档

swagger接口规范

前端开发人员要通过接口描述使用接口; 测试人员也需要通过接口描述测试接口 --黑盒测试

1.添加swagger的jar包
2.添加配置类SwaggerConfig:修改4个地方的信息 (org.ming api 文档说明 contact)
3.写可供扫描的接口doc文档

@Api(tags = "部门接口",description = "部门接口详细描述")
@ApiOperation(value = "部门添加或修改",notes = "如果有id就是修改否则就是添加")

访问测试地址: http://localhost:8080/swagger-ui.html

其他

// 成功与否返回对象
@Data
public class AjaxResult {
    private Boolean success = true;
    private String message = "操作成功!";

    public AjaxResult() {
    }

    //对象由自己创建,不交给外部创建
    public static AjaxResult me(){
        return new AjaxResult();
    }

    //只需要一个返回失败  链式编程
    public AjaxResult setMessage(String message) {
        this.success = false;
        this.message = message;
        return this;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

​2023年湖北黄冈安管三类人员个人可以报名吗 ?报名时间是什么时候?

2023年湖北黄冈安管三类人员个人可以报名吗 &#xff1f;报名时间是什么时候&#xff1f; 个人不可以报名。安管三类人员包括建筑施工企业主要负责人、建筑施工企业项目负责人以及建筑施工企业专职安全生产管理人员&#xff0c;他们是对本企业安全生产工作负责的三类人员&#…

【LInux】简单进度条程序的编写

在进行进度条的程序的编写之前&#xff0c;还有几个问题需要解决。 第一个问题&#xff0c;先来看两段代码&#xff1a; 对比上面两段代码只有一个\n的区别。 左边的代码很简单&#xff0c;就是先打印&#xff0c;然后停顿 3 秒&#xff0c;程序退出。 主要问题是&#xff0c;…

ARM通讯接口

ARM要和传感器等芯片进行通信,需要物理线路.用于传送数据的物理线路,称为总线.根据传送的数据速度 物理线路的多少,有很多不同的总线.最常见的是 串口总线 SPI总线 I2C总线 USB总线等. 我们简单的介绍一下串口和i2c接口. 串口,UART,有两根线,分别为TX RX.TX用于发送本地数据…

SAP从入门到放弃系列之生产订单报工

文章目录导航 一、概述二、订单确认的方式2.1、订单抬头维度确认2.2、工订单序维度确认 三、确认的类型四、工序确认的屏幕界面4.1 设置屏幕格式4.2 订单类型维护确认参数 五、确认产生的数据 一、概述 生产订单下达后&#xff0c;订单的确认是对车间生产进度的体现&#xff0…

三、传播引擎

文章目录 1、约束传播问题的数学表示2、传播引擎3、幂等&#xff08;idempotent&#xff09;4、调用事件5、已解决的传播器6、引擎优化THE END 1、约束传播问题的数学表示 \qquad 给定 变量集合 { X i } \{X_i\} {Xi​}和其对应的值域 D ( X i ) D(X_i) D(Xi​)&#xff1b;给定…

gnuplot画图

首先,安装gnuplot: sudo apt-get install gnuplot 接着,输入gnuplot,进入gnuplot工作模式: gnuplot 输入下述命令,打开对应的位姿文件,使用XX列数据进行画图: plot poses.txt using 2:3输入下述命令,打开两个不同的位姿文件,同时进行绘图. plot poses.txt using 2:3 with l…

Mac上,flv怎么转换成mp4格式

Mac电脑 怎么把mov格式的视频转换mp4&#xff1f;在进行视频格式转换之前&#xff0c;让我们先了解一下为什么需要将MOV格式转换为MP4格式。mov是由美国Apple公司开发的一种视频格式&#xff0c;主要由Apple QuickTime用于存储视频文件。使用苹果手机的用户可以发现&#xff0c…

AIDL Binder机制和原理

新的Android 通信规范中&#xff0c;C层使用AIDL替代HIDL实现Framework和Vendor层之间调用解耦。 我们知道&#xff0c;Binder之间通信&#xff0c;需要一个服务端和一个客户端. 【Binder】 Binder架构分成四层&#xff0c;应用层&#xff0c;Framework层&#xff0c;Native…

4. 注册machine

数字mic系列&#xff0c;注册machine dts配置如下 digital_mic: digital-mic {status "okay";compatible "simple-audio-card";simple-audio-card,format "i2s";simple-audio-card,mclk-fs <256>;simple-audio-card,name "digit…

你知道2个KT6368A的蓝牙芯片模块如何配对_以及数据传输吗

目录 一、简介你知道2个KT6368A的蓝牙芯片模块如何配对_以及数据传输吗&#xff1f;KT6368A的蓝牙模块之间是可以建立连接&#xff0c;并且全双工数据透传的但是有几点注意事项&#xff0c;一定要选择KT6368A的主机版本&#xff0c;和从机版本&#xff0c;如下图&#xff1a; …

Spring Boot 中的分布式锁

Spring Boot 中的分布式锁 在分布式系统中&#xff0c;多个应用程序可能需要同时对同一个资源进行修改。为了避免数据的不一致性和冲突等问题&#xff0c;我们需要对这些资源进行加锁操作。在本文中&#xff0c;我们将介绍 Spring Boot 中的分布式锁是什么&#xff0c;原理是什…

OpenCV键盘监听函数 cv2::waitKey( delay )

1、函数原型&#xff1a;cv::waitKey( delay ) delay&#xff1a;等待时间(毫秒) 作用&#xff1a;通过 waitKey() 可以获取键盘输入2、示例&#xff1a; 实现键盘输入1&#xff0c;将图像转为灰度图输出&#xff1b; 键盘输入2&#xff0c;将图像转为HSV图输出&#xff1b; …

element ui - el-button 重新渲染后disabled属性失效

element ui - el-button重新渲染后disabled属性失效 场景解决方法 场景 有两组不同的按钮&#xff1a; 不在灰度发布状态下的 disabled 的灰色按钮&#xff1b;灰度发布状态下的 可点击按钮&#xff1b; 发现当再次渲染 灰色按钮 时&#xff0c;disabled 属性失效。 解决方…

7.6 【Linux】文件系统的特殊观察与操作

7.6.1 磁盘空间之浪费问题 从上面的特殊字体部分&#xff0c;那就是每个文件所使用掉 block 的容量&#xff01;举例来说&#xff0c;那个 crontab 虽然仅有 451Bytes &#xff0c; 不过他却占用了整个 block &#xff08;每个 block 为 4K&#xff09;&#xff0c;所以将所有的…

电子企业MES管理系统如何加强生产现场管控

随着数字化时代的到来&#xff0c;中小型电子企业面临着提升生产现场管控的挑战。为了应对这一挑战&#xff0c;许多企业开始采用MES生产管理系统。本文将探讨MES生产管理系统如何帮助电子企业加强生产现场管控&#xff0c;提高生产效率和质量。 在电子企业的生产现场&#xf…

MCU是否会从ADAS域控制器消失

摘要&#xff1a; ADAS架构及MCU功能概览、未来ADAS架构的两种方案、MCU是否从ADAS域消失的一点思考 ADAS的装机量和渗透率再提升&#xff0c;尤其L2及L2级&#xff1b;那么随着ADAS域控制器主控芯片的增强&#xff0c;未来&#xff0c;MCU是否还会存在&#xff1f; 转自佐思汽…

SSM之MyBatis

MyBatis学习笔记 一、入门二、XML配置1、configuration&#xff08;配置&#xff09;2、properties&#xff08;属性&#xff09;3、settings&#xff08;设置&#xff09;4、typeAliases&#xff08;类型别名&#xff09;5、typeHandlers&#xff08;类型处理器&#xff09;6、…

CSS的学习3

什么是CSS CSS是层叠样式表的简称&#xff0c;又称为CSS样式表或级联样式表。CSS是一种标记语言。 主要用于设置HTML页面中的文本内容&#xff08;字体、大小、对齐方式等&#xff09;、图片的外形&#xff08;宽高、边框样式、边距等&#xff09;、版面的布局和外观显示样式…

【算法】树形DP ② 打家劫舍Ⅲ(树上最大独立集)

文章目录 前期知识例题337. 打家劫舍 III 相关练习题目没有上司的舞会 https://www.luogu.com.cn/problem/P13521377. T 秒后青蛙的位置 https://leetcode.cn/problems/frog-position-after-t-seconds/⭐⭐⭐解法1&#xff1a;BFS优化代码 解法2——自顶向下dfs解法3——自底向…

Buildroot 系统设置开机密码登录-迅为RK3588开发板

首先对开发板进行上电&#xff0c;开发板正常启动后&#xff0c;使用命令“vi /etc/inittab”对文件进行修改&#xff0c;如 下图所示&#xff1a; 设置为密码登陆时配置如下图&#xff08;注意将 ttyS0 修改为 ttyFIQ0&#xff09;&#xff1a; 修改完&#xff0c;保存退出&a…