前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)

本文详细介绍了在前后端分离项目中,如何整合CRUD操作、阿里云OSS对象存储、EasyExcel数据处理、视频点播服务以及SpringCloud微服务。内容涵盖了从接口设计、数据库操作到前端页面展示的全过程,涉及到Java、Vue、nginx、Redis、Nacos等多个技术。同时,文中还探讨了微服务架构、服务注册与调用、熔断策略以及服务治理等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整合篇一

整合CRUD

前后端对接流程

我们这里拿查询所有user做实例

全栈开发流程

image-20220507095959632

image-20220422114748269

image-20220422114444458

添加路由

模板中给的其实也有目录,我们看着复制粘贴根据自己的需求改改即可

image-20220422152026688

点击路由显示页面

redirect:'/teacher/table’作用是当访问/teacher时会自动跳到/teacher/table

component是做布局的,就是页面做固定不动的部分

image-20220422152340394

在api文件夹创建js文件,定义接口地址和参数

image-20220422152930751

创建vue页面引入js文件,调用方法实现功能

我们先来了解一下response对象

以下是response对象的属性和方法

所以说,response就是代表接口返回的数据

image-20220422223516849

image-20220422225856659

在看我们后端定义的接口

image-20220422224305331

这里的scope.row是获取行数据是固定写法

image-20220422230224393

这样功能就实现了

image-20220422230800965

补充下分页条实现方式

分页条

直接拿element-ui里面的来用就可以

因为我分页条和表单在同一页面,所以写在同一组件下

image-20220422231913492

多条件查询

直接拿element-ui里面的来用就可以

因为我分页条和表单在同一页面,所以写在同一组件下

主要是js对象和java对象的问题,注意区分即可

其余的也是直接用element-ui组件直接拿过来改改数据

image-20220423090900436

有了查询对象之后把查询对象传入我们写的获取讲师列表即可

我们在查询按钮绑定方法

image-20220423091140995

测试

image-20220423091221673

删除功能

image-20220423092331661

增加功能

image-20220423095057832

3、定义增加API

image-20220423095142609

4、引入js,写vue页面

image-20220423094948248

5、测试

image-20220423100159283

6、补充

image-20220423101307100

修改功能

我们想让增加和修改在同一页面下进行

增加和修改不同点在于,修改要做数据回显

那么如何区分这两个请求呢?

答案是修改的时候地址栏会有id,而保存没有

定义Api、定义路由、定义跳转路径

image-20220423105407052

修改功能逻辑

image-20220423110736418

测试

image-20220423110820022

修改成功

image-20220423110833691

修改是用put请求还是post请求?

idempotent 幂等的

这两个方法看起来都是讲一个资源附加到服务器端的请求,但其实是不一样的。一些狭窄的意见认为,POST方法用来创建资源,而PUT方法则用来更新资源。

幂等(idempotent、idempotence)是一个抽象代数的概念。在计算机中,可以这么理解,一个幂等操作的特点就是其任意多次执行所产生的影响均与依次一次执行的影响相同。

POST在请求的时候,服务器会每次都创建一个文件,但是在PUT方法的时候只是简单地更新,而不是去重新创建。因此PUT是幂等的。

举一个简单的例子,假如有一个博客系统提供一个Web API,模式是这样http://superblogging/blogs/post/{blog-name},很简单,将{blog-name}替换为我们的blog名字,往这个URI发送一个HTTP PUT或者POST请求,HTTP的body部分就是博文,这是一个很简单的REST API例子。我们应该用PUT方法还是POST方法?取决于这个REST服务的行为是否是idempotent的,假如我们发送两个http://superblogging/blogs/post/Sample请求,服务器端是什么样的行为?如果产生了两个博客帖子,那就说明这个服务不是idempotent的,因为多次使用产生了副作用了嘛;如果后一个请求把第一个请求覆盖掉了,那这个服务就是idempotent的。前一种情况,应该使用POST方法,后一种情况,应该使用PUT方法。

整合阿里云OSS

我们想实现在添加讲师信息的时候加上头像上传功能,怎么办呢?

用阿里云的OSS对象存储即可

环境部署

首先我们打开阿里云注册个OSS对象存储

image-20220423140743003

Java操作OSS

详细操作可查官方文档,下面只写关键代码

[SDK示例 (aliyun.com)](https://help.aliyun.com/document_detail/32008.html)

1、定义工具类读取配置文件

通过继承InitializingBean

当项目已启动,spring加载之后,执行接口一个方法。就是afterPropertiesSet

读取配置文件内容后,在通过执行接口里的一个方法,从而让外面能使用

image-20220423141537765

2、编写上传文件接口

MultipartFile类是org.springframework.web.multipart包下面的一个类,如果想使用MultipartFile类来进行文件操作,那么一定要引入Spring框架。MultipartFile主要是用表单的形式进行文件上传,在接收到文件时,可以获取文件的相关属性,比如文件名、文件大小、文件类型等等。

我们对着官网实例进行修改

image-20220413151840052

image-20220423143711082

image-20220423143946687

3、controller调用接口

image-20220423145150551

4、前端部分

引入上传图片框也在save页面,所以

image-20220423151338689

image-20220423151602576

5、测试

在这里插入图片描述

上传成功

在这里插入图片描述

image-20220416173356445

nginx反向代理

Spring Boot与Vue的前后端分离项目中集成阿里云OSS并实现数据表格导出,可以按照以下步骤操作: 1. **设置环境**: - 注册并获取阿里云OSS的访问密钥(Access Key ID 和 Access Key Secret)。 - 安装对应的SDK,如Spring Cloud Alibaba的`spring-cloud-starter-alibaba-oss`。 2. **配置OSS客户端**: - 在Spring Boot项目的application.properties或yml文件中添加OSS配置,例如: ```properties spring.cloud.alibaba.cloud oss.endpoint=<your_oss_endpoint> spring.cloud.alibaba.cloud oss.accessKeyId=<your_accessKeyId> spring.cloud.alibaba.cloud oss.accessKeySecret=<your_accessKeySecret> ``` 3. **创建上传服务**: - 在Spring Boot中创建一个处理文件上传的Service或Controller,使用OSS SDK上传文件到指定目录。 4. **Vue前端调用API**: - 在Vue组件中,通过axios或其他HTTP库调用后端的API来上传数据表为CSV文件,例如: ```javascript async uploadTable() { const response = await axios.post('/api/upload', { data: this.tableData }); if (response.data.success) { console.log('表格已成功上传'); } else { console.error(response.data.message); } } ``` 5. **后台返回下载链接**: - 后端收到请求后,生成文件下载URL,并将URL返回给前端。 ```java @PostMapping("/upload") public ResponseEntity<?> uploadFile(@RequestParam("data") String data, HttpServletResponse response) { // 上传数据到OSS,获取文件地址 String url = ossClient.putObject(bucketName, fileName, new File(data)); // 设置响应头,告诉浏览器这是一个文件下载 response.setHeader("Content-Disposition", "attachment; filename=data.csv"); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.sendRedirect(url); return ResponseEntity.ok().build(); } ``` 6. **数据表格导出**: - 在Vue中,当用户需要导出数据时,显示这个下载链接,让用户点击直接从云端下载文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值