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

目录

      • 项目介绍
      • 需求分析
      • 项目架构
        • 项目技术架构
        • 前后端分离
        • 前后端分离开发模式
        • 前后端分离优缺点
      • 后端项目搭建-部门模块
        • 项目端口规划
        • 创建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>

测试

    @Testpublic 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);}@Testpublic 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/1public 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.hqwc.cn/news/9180.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝奥声开发高性价比智能wifi插座进军智能家居

关键词&#xff1a;智能家居、家用插座、WiFi插座、高性价比插座 智能硬件的大潮袭来让智能家居这一并不新鲜的概念再次火热起来&#xff0c;关于智能家居的各种场景的描述给了我们很大的想象空间&#xff0c;然而落到实处真正开始走进生活时却又显得那么骨感&#xff0c;一时间…

使用EXCEL公式编程从网页获取股票数据并保存到excel

共享文件地址 在dataexcel服务器的 /示例/03函数示例/获取股票数据8.fexm 路径 公式脚本 var urlcelltext("URL");//获取单元格ID为URL的单元格内容 var txtWebGet(url); //从网页获取数据 cellvalue("data",txt); //将获取到的数据库保存到ID为DATA的单…

JMeter从数据库中获取数据并作为变量使用

目录 前言&#xff1a; 1、JMeter连接MySQL数据库 2、线程组下新建一个 JDBC Connection Configuration 配置元件 3、实现数据库的查询-单值引用 4、实现数据库的查询-多值引用 前言&#xff1a; 在进行接口测试时&#xff0c;经常需要使用一些动态的数据&#xff0c;例如…

TypeScript学习(一):快速入门

文章目录 一、TypeScript 简介1、TypeScript 是什么&#xff1f;2、TypeScript 与 JavaScript 的区别3、JavaScript 的缺点4、为什么使用 TypeScript 二、TypeScript 开发环境搭建1、下载Node.js2、安装Node.js3、使用npm全局安装TypeScript4、创建一个ts文件5、使用tsc对ts文件…

使用PyMC进行时间序列分层建模

在统计建模领域&#xff0c;理解总体趋势的同时解释群体差异的一个强大方法是分层(或多层)建模。这种方法允许参数随组而变化&#xff0c;并捕获组内和组间的变化。在时间序列数据中&#xff0c;这些特定于组的参数可以表示不同组随时间的不同模式。 今天&#xff0c;我们将深…

驱动开发 作业2

使用 ioctl 替换 write/read 控制 LED、蜂鸣器、马达、风扇&#xff0c;并使用 udev 来自动创建设备文件 完整代码目录&#xff0c;请看这个仓库依然使用之前 ARM 课程中的 common 中的结构体代码都差不多&#xff0c;就贴个 led.c &#xff0c;用户空间测试代码 test.c 和头文…

剑指 Offer 57 - II: 和为s的连续正数序列

这里从0开始先然是不对的&#xff01;滑动窗口思想很好用&#xff0c;相等了必定移动左边&#xff01;让他变小&#xff01;这都想不到&#xff01; 首先看到返回值和题给条件明确这是一个滑动窗口任务/可变数组 &#xff0c;所以要使用List&#xff0c;然后其中元素又是数组&a…

QSlider样式表

QSlider 的样式设置_qslider样式_robertkun的博客-CSDN博客 Qslider样式_qslider的多种样式_DayDay_Upppp的博客-CSDN博客 【Qt】QSlider----qss&#xff08;round handle) 圆形滑块_qslider 圆形滑块_Qyee16的博客-CSDN博客 QT QSlider控件 样式表 渐变色的特殊格式_qslid…

SpringBoot 基于Redis的消息队列(基于发布订阅模型)

SpringBoot下Redis消息队列(基于发布订阅模型) 1. 什么是生产者/消费者模式&#xff1f; 消息队列一般是有两种场景 1、种是发布者订阅者模式 2、种是生产者消费者模式 生产者消费者模式 &#xff1a;生产者生产消息放到队列里&#xff0c;多个消费者同时监听队列&#xff0…

分布式——监控平台zabbix的认识与搭建

作为一个运维&#xff0c;需要会使用监控系统查看服务器系统性能、应用服务状态和网站流量指标等&#xff0c;利用监控系统的数据去了解网站上线发布的结果和健康状态。 利用一个优秀的监控软件&#xff0c;我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●…

二叉树 — 折纸问题

题目&#xff1a; 一道Google真实出现过的面试题 将一段纸条放在桌上&#xff0c;然后从纸条下边向上方对折1次&#xff0c;压出折痕后展开&#xff0c;此时折痕是凹下去的&#xff08;称为凹折痕&#xff09;&#xff0c;即折痕凸起的方向指向纸条的背面。如果从纸条的下边向上…

我的创作纪念日兼GPT模型简单介绍

目录 一、引言 二、收获与开端 2.1 问题&#xff1a;在创作的过程中都有哪些收获&#xff1f; 2.2 模型开端 三、日常与深入 3.1 问题&#xff1a;当前创作和你的学习是什么样的关系&#xff1f; 3.2 模型深入介绍 3.2.1 无监督预训练 3.2.2 有监督下游任务精调 四、…