本文已参与「新人创作礼」活动,一起开启掘金创作之路
前言
通过上篇文章juejin.cn/editor/draf…我们已经准备好了所有的开发环境,本篇文章介绍一下如何通过Spring Boot搭建一个简单的restful风格的后端接口。
初始化下载
Spring Boot有多种初始化项目的方法,我先介绍常用的三种
官网初始化
我们访问Sppring Boot的初始化官网start.spring.io/,可以看到初始化的页面分为一下几个部分
- 第一个区域表示我们选择的项目管理工具是maven,虽然现在maven的打包速度慢于gradle,但是我们可以使用mvnd来加速打包
- 第二个区域标识我们需要的开发语言,我这里选择爪洼
- 第三个区域代表我们选择的SPring Boot版本,snapshot代表是快照版本,M1代表是里程碑1版本,这里我们选择已经固定功能和特性的2.6.3版本
- 第四个区域代表的是我们的项目设置,以及打包方式,这里我们可以按照自己的喜欢或者实际情况设置
idea初始化
idea初始化是编辑器自己带的初始化插件。我们打开idea,依次点击File->New->Project,选择顺序如下所示
这里大部分的初始化设置和官网差不多,注意下边的java选择17.
阿里云初始化
阿里云的初始化方式和官网初始化差不多,有兴趣的可以看一下start.aliyun.com/bootstrap.h…。上边还有不少Spring Boot和Spring Cloud的教程,喜欢卷的xdm可以卷一波
初始化一个简单的restful接口
我们已经初始化完项目了,有一些不需要的文件我们可以先去除,保留文件如我下图所示即可
启动项目
添加依赖
我们在下载的时候,如果没有选择运行容器的话,需要我们添加运行容器依赖。打开我们的pom.xml,在dependencies中添加依赖如下
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
这样我们就添加了Spring Boot的默认web运行容器:tomcat进来
改变配置文件
我们可以看到在/src/main/resources下有一个application.properties文件,我们直接修改后缀名称为yml。然后在文件中添加配置如下
server:
port: 1001
这里代表我们这个项目的端口为1001
启动项目
我们找到这个以Application为后缀的文件,如果是idea开发的话,会显示一个绿色开始按钮,我们选择按钮之后选择debug模式,可以看到控制台输出入下。这代表我们的项目成功启动了
编写一个restful接口
处理统一的返回数据
我们在写后端接口的时候,往往需要返回统一的结构体给前端,我们定义一个统一的返回实体类,里边有前端需要的基本字段,向对象中赋值,即可实现返回数据的统一封装
我们直接在最末级文件夹(我这里是boot)创建一个common/entity包,下边新建ResVo文件内容如下
@Data
@Accessors(chain = true)
public class ResVo<T> implements Serializable {
@Serial
private static final long serialVersionUID = 5147155156059020583L;
private int code;
private String msg;
private T data;
private boolean success;
public static <T> ResVo<T> ok() {
return fillRestVo(HttpURLConnection.HTTP_OK, null, null, true);
}
public static <T> ResVo<T> ok(String msg, T data) {
return fillRestVo(HttpURLConnection.HTTP_OK, msg, data, true);
}
public static <T> ResVo<T> ok(T data) {
return fillRestVo(HttpURLConnection.HTTP_OK, null, data, true);
}
public static <T> ResVo<T> error() {
return fillRestVo(HttpURLConnection.HTTP_INTERNAL_ERROR, null, null, false);
}
public static <T> ResVo<T> error(String msg, T data) {
return fillRestVo(HttpURLConnection.HTTP_INTERNAL_ERROR, msg, data, false);
}
public static <T> ResVo<T> error(int code,String msg) {
return fillRestVo(code, msg, null, false);
}
public static <T> ResVo<T> error(T data) {
return fillRestVo(HttpURLConnection.HTTP_INTERNAL_ERROR, null, data, false);
}
public static <T> ResVo<T> fillRestVo(int code, String msg, T data, boolean success) {
return new ResVo<T>().setCode(code).setMsg(msg)
.setData(data).setSuccess(success);
}
}
@Date 可以自动帮助我们生成get set等方法 @Accessors(chain = true) 开启链式编程 下边的代码是初始化基本响应体,并根据传参的不同封装成不同的相应数据的方法
第一个restful接口
我们在boot文件夹下新建modules/index/controller文件目录,内容如下
import code.liang.top.admin.boot.commom.entity.ResVo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author lmh
* @version 1.0
* @description: index controller
*/
@RestController
@RequestMapping
public class IndexController {
@RequestMapping("/index")
public ResVo<String> index() {
return ResVo.ok("123");
}
}
访问'http://127.0.0.1:1001/index' 即可显示我们定义的返回数据 这里简单解释一下
- 我们是安装功能的不同进行分组,例如用户、角色就会在modules下新建user、role
- @RestController 可以开放该controller作为外部访问使用
- @RequestMapping 表示可以开放所有的请求方式 这样我们的第一个restful接口就开发完成了
结语
今天我们开发了第一个restful接口,算是接触了Srping Boot的开发,以后还有更长的路探索,欢迎关注我的系列文章
欢迎关注我的掘金账号:juejin.cn/user/261290…
下期预告:整合knife4j,开放在线接口文档进行开发协作