概述

Postman 是一个流行的 API 平台,它优化了 API 开发生命周期的各个步骤。无需编写任何代码,我们就可以使用 Postman 来测试 API。你可以选择独立的应用程序或浏览器扩展。

在这个教程中,我们将探讨如何在使用 Postman 时上传文件和 JSON 数据。

2. 应用设置

2.1. 依赖项

我们在 pom.xml 中定义了一个基本的 Spring 应用程序,使用了 spring-boot-starter-web 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.2. 模型

接下来,我们定义了一个简单的 JSON 输入模型类:

public class JsonRequest {
    int id;
    String name;
}

为了简洁,我们省略了构造函数、getter 和 setter 等声明。

2.3. 终点

最后,根据场景设置一个处理请求的端点,以处理文件上传:

@PostMapping("/uploadFile")
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file){
    return ResponseEntity.ok().body("file received successfully");
}

handleFileUpload() 方法中,我们期望接收一个 MultipartFile 作为输入,并返回一个带有静态文本的 200 状态消息。这里我们保持简单,没有探索保存或处理输入文件。

MultipartFile 由 Spring-Web 提供,表示上传的文件。然后,这个文件将存储在内存或临时磁盘上,一旦请求处理完成,它就会被冲出。

我们也创建一个处理 JSON 数据的端点:

@PostMapping("/uploadJson")
public ResponseEntity<String> handleJsonInput(@RequestBody JsonRequest json){
    return ResponseEntity.ok().body(json.getId()+json.getName());
}

handleJsonInput() 方法中,我们期望一个 JsonRequest 类型的对象作为输入,这是我们定义的模型类。方法返回一个 200 HTTP 状态码,响应体中包含输入的 idname

我们使用了 @RequestBody 注解,将输入序列化为 JsonRequest 对象,这样我们就看到了对 JSON 的简单处理,以验证输入。

3. 上传数据

我们已经设置了应用程序,现在让我们检查两种向应用提供输入的方式。

3.1. 在 Postman 中上传 JSON

JSON 是端点的一种文本输入类型。我们将遵循以下步骤将其传递给公开的端点。

默认方法设置为 GET,所以在添加了 localhost URL 后,我们需要将方法更改为 POST

点击“Body”选项卡,然后选择“raw”。在显示“Text”的下拉菜单中,选择“JSON”作为输入:

我们需要粘贴输入的 JSON,然后点击“发送”:

我们收到一个 200 状态码作为响应,如截图底部所示。此外,输入的 idname 在响应体中返回,确认 JSON 在端点处被正确处理

3.2. 在 Postman 中上传文件

为了示例,我们选择一个文档文件,因为我们没有定义端点可以消费哪种类型的文件。

首先,我们添加 localhost URL,并将方法更改为 POST,因为默认方法是 GET

点击“Body”选项卡,然后选择“form-data”。对于键值对的第一行,我们点击右角的下拉框,将键字段的输入设置为“File”:

我们需要在键列中添加文本“file”,这是我们端点的 @RequestParam。然后,在值列中浏览并选择要上传的文件。

最后,点击“发送”:

点击“发送”时,我们得到一个带有端点定义中静态文本的 200 HTTP 状态码。这意味着我们的文件已成功无误地传送到端点。

4. 同一请求发送多部分数据和 JSON

现在,让我们看看如何在同一个 Postman 请求中同时发送多部分数据和 JSON。

首先,我们需要配置 Postman 请求,并在预请求脚本中设置要发送的 JSON 数据:

其次,我们在请求编辑器的“Body”选项卡中选择“form-data”作为数据类型。然后,我们需要添加多部分数据字段和嵌套 JSON 对象的字段:

  • 对于嵌套的 JSON,我们将从预请求脚本中定义的“jsonData”变量获取其值。同时,需要设置内容类型为 application/json
  • 对于文件字段,点击“选择文件”按钮,会弹出文件对话框,允许选择要上传的文件。选择文件后,Postman 将将其包含在 multipart/form-data 请求中。

最后,创建一个适当的控制器来处理 multipart/form-data 请求,并相应地处理文件和嵌套 JSON 对象。

@PostMapping("/uploadJsonAndMultipartData")
public ResponseEntity<String> handleJsonAndMultipartInput(@RequestPart("data") JsonRequest json, @RequestPart("file") MultipartFile file) {
    return ResponseEntity.ok()
      .body(json.getId() + json.getName());
}

在这个端点中,handleJsonAndMultipartInput() 方法使用 @RequestPart("data") 接收嵌套 JSON 对象作为 JsonRequest 对象,而文件作为 MultipartFile 对象通过 @RequestPart("file") 接收。

5. 总结

在这篇文章中,我们构建了一个简单的 Spring Boot 应用程序,并探讨了通过 Postman 向公开端点提供数据的两种不同方式。

一如既往,代码示例可在 GitHub 查看。