三、实际开发接口上传服务器交给前端调用

199 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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,列表如下: image.png 双击指头指向的package,maven会自动封装的,生成一个jar包 image.png 然后直接上上传到服务器,执行

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上面的没用的话

实在不行,可以点击下面的按钮,关闭测试模块。

其实大部分都是你的依赖问题,这个方法感觉像是鸵鸟策略。

image.png

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分层

image.png

5.2 各分层含义

  • controller:编写后端提供前端的接口。
  • dao:与在mapper中Mybatis的xml中,sql语句相互形成映射关系,一般为对应实体类简单数据库操作的接口。
  • entity:主要放实体类Bean。
  • service:业务层,编写复杂的服务功能,例如:复杂的数据库操作等。
  • impl:整合service和dao层内容,提供后端完整接口调用。
  • mapper:放Mybatis的xml文件。

6.记得给服务器的端口开安全组配置

谨记!!!