application/x-www-form-urlencoded传参,@NotBlank注解失效
时间: 2024-06-13 16:05:30 浏览: 157
application/x-www-form-urlencoded是一种编码方式,用于将表单数据编码为键值对,以便通过HTTP请求发送。在使用该编码方式时,@NotBlank注解失效的原因是因为该注解只能用于验证application/json格式的请求体中的参数,而不能用于验证application/x-www-form-urlencoded格式的请求体中的参数。因此,在使用该编码方式时,需要使用其他方式来验证参数,例如手动验证或使用第三方库来验证。
相关问题
feignclient post 请求如何application/x-www-form-urlencoded传参
在使用 FeignClient 发送 POST 请求时,可以通过 `@RequestParam` 注解来指定请求参数。而在使用 `application/x-www-form-urlencoded` 传参时,可以使用 `MultiValueMap` 类型的参数来传递参数。具体步骤如下:
1. 定义请求参数的类,例如:
```java
public class MyRequestParam {
private String param1;
private String param2;
// getter 和 setter 方法
}
```
2. 在 FeignClient 的方法声明中,使用 `@RequestBody` 注解来指定请求体参数,例如:
```java
@PostMapping("/my/api")
MyApiResponse myApi(@RequestBody MultiValueMap<String, String> requestBody);
```
3. 在调用 FeignClient 方法时,将 `MyRequestParam` 对象转换为 `MultiValueMap` 对象,并传递给 FeignClient 方法即可,例如:
```java
MyRequestParam requestParam = new MyRequestParam();
requestParam.setParam1("value1");
requestParam.setParam2("value2");
MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("param1", requestParam.getParam1());
requestBody.add("param2", requestParam.getParam2());
MyApiResponse response = feignClient.myApi(requestBody);
```
注意,在使用 `application/x-www-form-urlencoded` 传参时,需要将请求参数转换为 key-value 的形式,并将其放入 `MultiValueMap` 中。同时,FeignClient 的方法声明中需要使用 `@RequestBody` 注解来指定请求体参数。
application/x-www-form-urlencoded与multipart/form-data
这两个是HTTP协议中常见的两种数据传输格式。其中,application/x-www-form-urlencoded是默认的传输格式,常用于表单提交数据,数据会被编码成key-value的形式,例如:name=John&age=20。而multipart/form-data则常用于上传文件,数据会被分割成多个部分,每个部分都有自己的Content-Type和Content-Disposition。
在使用application/x-www-form-urlencoded格式时,数据会被编码成URL编码格式,例如空格会被编码成%20。而在使用multipart/form-data格式时,数据不需要进行编码。
阅读全文