在本教程中,我们将学习使用 Postman 通过x-www-form-urlencoded提交数组
W3C 委员会定义了多种格式,我们可以使用这些格式通过网络层发送数据。这些格式包括 form-data、raw 和 x-www-form-urlencoded 数据。默认情况下,我们使用最后一种格式发送数据。
下面列出的数据格式描述了在 HTTP 消息正文中作为数据块发送的表单数据。它发送一个编码的表单数据提交给服务器。编码数据具有键值对的格式。服务器必须支持对应的content-type。
使用此content-type提交的表单必须符合以下编码模式:
此外,数据的长度并没有指定。但是,使用 x-www-form-urlencoded 数据类型有数据限制。因此,服务器将拒绝超过配置中指定大小的请求。
此外,发送二进制数据或包含非字母数字字符的值时,效率比较低。 包含非字母数字字符的键和值采用百分比编码(也称为 URL 编码),因此这种类型不适用于二进制数据。 因此,我们应该考虑改用 form-data 内容类型。
此外,我们不能用它来编码文件。 它只能对 URL 参数或请求正文中的数据进行编码。
要在 Postman 中使用 x-www-form-urlencoded 类型,我们需要在请求的正文选项卡中选择同名的单选按钮。
如前所述,请求由键值对组成。 Postman 在将数据发送到服务器之前会对数据进行编码。 此外,它将对键和值进行编码。
现在,让我们看看如何在 Postman 中发送一个数组。
我们将首先展示如何发送一个包含简单对象类型的简单数组对象,例如字符串。
首先,让我们创建一个将数组作为实例变量的 Student 类:
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
class Man {
private String name;
private String gender;
private String[] hobbies;
}
其次,我们将定义一个控制器暴露rest接口:
@RestController
@RequestMapping("/test/20221101")
public class TestSendArrayController {
@PostMapping(
path = "/send/array",
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public ResponseEntity sendAray(Man man) {
return ResponseEntity.ok(man);
}
}
当我们使用 consume 属性时,我们需要将 x-www-form-urlencoded 定义为控制器将从客户端接受的媒体类型。 否则,我们将收到 415 Unsupported Media Type 错误。 此外,我们需要省略 @RequestBody 注释,因为该注释不支持 x-www-form-urlencoded 内容类型。
最后,让我们在 Postman 中创建一个请求。 最简单的方法是使用逗号分隔值:
但是,如果值包含逗号符号本身,这种方法可能会导致问题。 我们可以通过单独设置每个值来解决问题。 把key设置为数组,我们需要使用相同的键提供键值对:
数组中元素的顺序将遵循请求中提供的顺序。
此外,方括号是可选的:
另一方面,如果我们想向数组中的特定索引添加一个元素,我们可以通过在方括号中指定索引来实现:
现在,让我们看一下发送包含复杂对象的数组的方式。
首先,让我们定义代表爱好的Hobby类:
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
class Hobby {
private String name;
private String cost;
}
接下来,我们将创建一个代表人的类:
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ComplexMan {
private String name;
private String gender;
private Hobby[] hobbies;
}
让我们在控制器类中添加一个新接口:
@PostMapping(
path = "/send/complex-array",
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public ResponseEntity sendComplexArray(ComplexMan man) {
return ResponseEntity.ok(man);
}
最后,让我们在 Postman 中创建一个请求。 与前面的示例一样,要向数组添加元素,我们需要使用相同的键提供键值对:
在这里,带索引的方括号是强制性的。 要将值设置为每个实例变量,我们需要使用点 ('.') 运算符,后跟变量名。
在本文中,我们学习了如何在服务器端设置 Content-Type 以避免出现 Unsupported Media Type 错误。 此外,我们还解释了如何在 Postman 中使用 x-www-form-urlencoded 内容类型发送简单和复杂的数组。
页面更新:2024-05-11
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号