从头开始开发一个java后端项目:2开发一个restful接口

1,950 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

前言

通过上篇文章juejin.cn/editor/draf…我们已经准备好了所有的开发环境,本篇文章介绍一下如何通过Spring Boot搭建一个简单的restful风格的后端接口。

初始化下载

Spring Boot有多种初始化项目的方法,我先介绍常用的三种

官网初始化

我们访问Sppring Boot的初始化官网start.spring.io/,可以看到初始化的页面分为一下几个部分 官网初始化

  1. 第一个区域表示我们选择的项目管理工具是maven,虽然现在maven的打包速度慢于gradle,但是我们可以使用mvnd来加速打包
  2. 第二个区域标识我们需要的开发语言,我这里选择爪洼
  3. 第三个区域代表我们选择的SPring Boot版本,snapshot代表是快照版本,M1代表是里程碑1版本,这里我们选择已经固定功能和特性的2.6.3版本
  4. 第四个区域代表的是我们的项目设置,以及打包方式,这里我们可以按照自己的喜欢或者实际情况设置

idea初始化

idea初始化是编辑器自己带的初始化插件。我们打开idea,依次点击File->New->Project,选择顺序如下所示 idea初始化 这里大部分的初始化设置和官网差不多,注意下边的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,开放在线接口文档进行开发协作