使用 Postman 通过xform-urlencoded类型提交数组

概述

在本教程中,我们将学习使用 Postman 通过x-www-form-urlencoded提交数组

W3C 委员会定义了多种格式,我们可以使用这些格式通过网络层发送数据。这些格式包括 form-data、raw 和 x-www-form-urlencoded 数据。默认情况下,我们使用最后一种格式发送数据。

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

标签:数组   方括号   类型   表单   符号   字符   定义   对象   格式   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top