概述
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 状态码,响应体中包含输入的 id
和 name
。
我们使用了 @RequestBody
注解,将输入序列化为 JsonRequest
对象,这样我们就看到了对 JSON 的简单处理,以验证输入。
3. 上传数据
我们已经设置了应用程序,现在让我们检查两种向应用提供输入的方式。
3.1. 在 Postman 中上传 JSON
JSON 是端点的一种文本输入类型。我们将遵循以下步骤将其传递给公开的端点。
默认方法设置为 GET
,所以在添加了 localhost
URL 后,我们需要将方法更改为 POST
:
点击“Body”选项卡,然后选择“raw”。在显示“Text”的下拉菜单中,选择“JSON”作为输入:
我们需要粘贴输入的 JSON,然后点击“发送”:
我们收到一个 200
状态码作为响应,如截图底部所示。此外,输入的 id
和 name
在响应体中返回,确认 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 查看。