最近刚把 SpringBoot 的第一个接口跑通,顺手用 Postman 把 GET、POST、PUT、DELETE 都测了一遍。这里记录一下从建项目到测试的完整过程,给同样刚入门的同学做个参考。

一、准备工作

用到的东西不多:

  • IDEA(我用的是 IDEA 自带的 Spring Initializr 建项目)
  • JDK 17
  • Maven
  • Postman(接口测试工具)

目标很简单:写一个 HelloController,把增删改查四个接口挂在 /hello 路径上,数据先用一个 HashMap 存着,不连数据库,重点是把流程跑通。

二、新建 Spring Boot 项目

打开 IDEA,新建项目,生成器选 Spring Boot,服务器用默认的 start.spring.io。配置按下面这样填:

新建项目配置

几个关键项:

  • 名称:demo-l05ys(随便起,改成自己的就行)
  • 语言:Java
  • 类型:Maven
  • 组 / 软件包名称:com.example / com.example.demol05ys
  • JDK:17(我这里用的 Microsoft OpenJDK 17.0.20)
  • 打包:Jar
  • 配置:Properties

点”下一步”,进到依赖选择页面。我们这个项目只需要勾 Web 分类下的 Spring Web:

选择 Spring Web 依赖

Spring Web 的说明写得很清楚:用来构建 Web 应用和 RESTful 接口,默认自带内嵌的 Tomcat,所以不用自己装服务器,直接运行 main 方法就能启动。选完点”创建”,IDEA 会自动下载依赖并生成项目骨架。

生成的项目大概长这样:

1
2
3
4
5
6
7
demo-l05ys
├── src/main/java/com/example/demol05ys/
│ ├── demol05ysApplication.java // 启动类
│ └── controller/ // 自己建的包,放接口代码
├── src/main/resources/
│ └── application.properties
└── pom.xml

三、写接口:HelloController

在 com.example.demol05ys.controller 包下新建 HelloController 类,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.example.demol05ys.controller;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;

@RestController
public class HelloController {
@GetMapping("/hello")
public String hello()
{
return "Hello SpringBoot: " + nameAges.toString();
}

private static HashMap<String, Integer> nameAges = new HashMap<>();

@PostMapping("/hello")
public String helloPost(String name, Integer age)
{
nameAges.put(name, age);
return "add name: " + name + ", age= " + age;
}

@PutMapping("/hello")
public String helloPut(String name, Integer age)
{
nameAges.replace(name, age);
return "update name: " + name + ", age= " + age;
}

@DeleteMapping("/hello/{name}")
public String helloDel(@PathVariable String name)
{
nameAges.remove(name);
return "delete name: " + name;
}
}

代码本身不复杂,说几个点:

  1. @RestController:加在类上,表示这个类里所有方法的返回值直接写进响应体。我们返回的是字符串,所以浏览器或 Postman 看到的就是这串字符串本身,不是页面。它相当于 @Controller + @ResponseBody 的合体。

  2. 四个注解对应四种请求方式:

    • @GetMapping("/hello"):GET,查询
    • @PostMapping("/hello"):POST,新增
    • @PutMapping("/hello"):PUT,修改
    • @DeleteMapping("/hello/{name}"):DELETE,删除

    同一个路径 /hello 可以挂四个方法,Spring 根据请求方式区分该调谁。

  3. 参数怎么接收:POST 和 PUT 里的 String name, Integer age 没加注解,Spring 会按参数名自动从 URL 的查询参数里取值,也就是说 ?name=wys&age=21 能直接绑定上。DELETE 里的 @PathVariable String name 则是从路径里取值,请求 /hello/wys 时 name 就等于 wys。

  4. 数据存在 static HashMap 里:纯粹为了演示方便,不连数据库。注意它是静态的、存在内存里,程序一重启数据就没了。另外 replace 只在 key 已存在时才替换,所以 PUT 一个不存在的名字不会新增。

写完的代码在 IDEA 里长这样:

HelloController 代码

四、启动项目

直接运行启动类 demol05ysApplication 的 main 方法就行。看到控制台输出 Started demol05ysApplication in ... 就说明启动成功了,默认端口是 8080。

如果端口被占用,可以在 application.properties 里改:

1
server.port=8081

五、用 Postman 测试接口

1. 建一个集合管理请求

建议在 Postman 里建一个集合(我起名叫”学习”),把四个请求按用途命名放进去,后面对照着测就很清楚:

Postman 集合

  • GET 获取信息
  • POST 设置信息
  • PUT 更新信息
  • DEL 删除信息

另外截图里请求地址写的是 {{apiBasePath}}/hello,这是 Postman 的环境变量。我在”测试环境”里把 apiBasePath 设成了 http://localhost:8080,好处是以后端口或部署地址变了,只改环境变量一处就行,四个请求都不用动。

2. POST 新增

方法选 POST,地址 {{apiBasePath}}/hello,在 Params 里加两个查询参数:

Key Value
name wys
age 21

点 Send,返回 200 OK,响应内容:

1
add name: wys, age= 21

POST 测试

3. GET 查询

方法选 GET,地址 {{apiBasePath}}/hello,不需要参数。点 Send,返回:

1
Hello SpringBoot: {wys=21}

能看到刚才 POST 进去的那条数据确实在 Map 里了:

GET 测试

4. PUT 修改

方法选 PUT,地址还是 {{apiBasePath}}/hello,参数改成 name=wys、age=22,点 Send,返回:

1
update name: wys, age= 22

再用 GET 验证一下,这时候 Map 里应该是 {wys=22}。

5. DELETE 删除

方法选 DELETE,注意这次不是传查询参数,而是把名字放在路径里:{{apiBasePath}}/hello/wys。点 Send,返回:

1
delete name: wys

DELETE 测试

最后再 GET 一次,返回 Hello SpringBoot: {},说明删除成功。

到这儿,增删改查四个接口就全部测完了,整个流程就是:POST 加一条 → GET 看到 → PUT 改掉 → DELETE 删掉 → GET 变空。

六、小结

  • SpringBoot 建 Web 项目只需要勾一个 Spring Web 依赖,内嵌 Tomcat,启动类一跑就能用;
  • @RestController + @GetMapping/@PostMapping/@PutMapping/@DeleteMapping 就能快速挂出 REST 风格的接口;
  • 参数接收有两种常见方式:查询参数按名字自动绑定,路径参数用 @PathVariable;
  • Postman 里建议用集合管理请求、用环境变量管理地址,测试增删改查一套下来思路很顺。

这个例子麻雀虽小,但把”建项目—写接口—启动—测试”的完整链路走了一遍。下一步可以把 HashMap 换成 MyBatis/MyBatis-Plus 加上数据库,返回值也可以换成统一的 JSON 格式,那就是正式项目的雏形了。


广告
广告正在加载中...
暂不开放评论,如对本文有任何疑问或建议,请联系apple@mr-wu.top
All Tags