持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情 接上两篇文章:
一、IDEA 2022 中Maven创建SpringBoot项目流程 - 掘金 (juejin.cn)
二、SpringBoot项目简单接口实例 - 掘金 (juejin.cn)
在前两篇文章我们初建了项目,并且开发出了一个简单的接口。那么,下一步就是让前端调用这个接口了。这样我们就实现了基本的业务交互,框架基本上算是完备了。剩下的就是将各种数据处理、业务交互进行填充。
这篇文章中,我们通过前端调用了后端开发的接口,并且也实际操作了将后端接口部署到linux服务器更方便调用的方法。
实际开发接口交给前端调用
1.后端封装get接口
@CrossOrigin
@GetMapping(value = "/users_num", name = "返回注册用户数目")
public String return_users_num(@RequestParam(value = "name", required = false) String name) {
int users_num=data_getter.get_users_num();
return String.format("%s", users_num == 0 ? "None" : users_num);
}
2.后端封装post接口
@CrossOrigin
@PostMapping("/delete_user")
public String delete(@RequestParam("code") String code){
String errcode=data_deleter.delete_users(code);
System.out.println(errcode);
return "删除成功";
}
3前端调用get接口
import axios from 'axios'
export const get_users_num = () => {
return axios.get( 'http://localhost:8880/data/users_num')
}
4.前端调用post接口
import axios from 'axios'
import Qs from "qs";
export const delete_user = (user_code) => {
const data = Qs.stringify({code:user_code});
return axios.post('http://localhost:8880/data/delete_user',data);
}
当然实际生产时我们肯定不能一直用IDEA运行自己的程序,这样在开发前端的时候很容易爆内存。比如我特别喜欢自己VScode搞前端VUE,Pycharm再开一个搞数据处理或者爬虫什么的。这样很容易电脑就黑屏了。
所以,如果有自己的服务器的话还是要把接口封装好了上传到服务器,然后我们再通过普武器的ip和端口去进行访问。
5.接口封装上传到linux服务器
右上角打开Maven,列表如下:
双击指头指向的package,maven会自动封装的,生成一个jar包
然后直接上上传到服务器,执行
java -jar 对应jar包的名字
接下来前端就可以通过http://ip:port访问了 ip就是你服务器的ip了,当然如果你配置域名了的话就要改成域名了。port嘛,就是自己设置的了(不要忘记服务器的安全组配置)
个人总结
1.跨域问题:
有很多种解决方法,这个选择简单粗暴的直接注解 @CrossOrigin
2.前端post请求时有两种参数封装方法
1、URLSearchParams()类
// 两种方式
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
2、qs转换
import Qs from "qs";
const data = qs.stringify({name:'zhangsan'}))
3.封装时报错
3.1一般问题
看看报错的依赖的版本,一般这样能解决 比如我的就是Gson的版本问题
3.2上面的没用的话
实在不行,可以点击下面的按钮,关闭测试模块。
其实大部分都是你的依赖问题,这个方法感觉像是鸵鸟策略。
4.用xshell连接服务器,断开连接jar包也停止运行
4.1、问题原因
打开XShell连接并运行
java -jar XX.jar
后当前的连接被锁定,也就是说,你的连接的线程当前的状态会影响程序的执行,比如你按了CTRL+C命令程序退出,还有关闭你的连接那么程序也会结束。
4.2、问题解决
nohup java -jar XXX.jar >log.out &
解析: 把此进程作为后台进程运行,且把日志输出到log.out文件中
5.Spring创建的时候get到了一个项目分层知识点
我这里只用到了Controller和Service层
5.1 初学Springboot分层
5.2 各分层含义
- controller:编写后端提供前端的接口。
- dao:与在mapper中Mybatis的xml中,sql语句相互形成映射关系,一般为对应实体类简单数据库操作的接口。
- entity:主要放实体类Bean。
- service:业务层,编写复杂的服务功能,例如:复杂的数据库操作等。
- impl:整合service和dao层内容,提供后端完整接口调用。
- mapper:放Mybatis的xml文件。
6.记得给服务器的端口开安全组配置
谨记!!!