application/x-www-form-urlencoded传参,@NotBlank注解失效
时间: 2024-06-13 21:05:30 浏览: 146
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请求方式
当你发送HTTP请求时,如果数据需要通过URL编码的方式传递,通常会采用"application/x-www-form-urlencoded"这种内容类型。这是一种常见的表单数据提交格式,适合包含键值对的形式,例如搜索查询、登录信息等。
一个简单的`application/x-www-form-urlencoded`格式的POST请求示例(包括GET请求)可能会像这样:
```http
-- 请求头 --
GET /search?q=keyword HTTP/1.1
Content-Type: application/x-www-form-urlencoded
-- 请求头 --
POST /api/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
-- 数据部分 --
username=admin&password=123456
```
在这个例子中,查询字符串`q=keyword`(GET请求)或POST数据`username=admin&password=123456`会被自动转化为`key=value`形式的键值对,并进行了URL编码处理。
阅读全文