Spring 启动 Rest 控制器 - 将表单编码的主体转换为 POJO
Spring boot Rest controller - convert form-encoded body to POJO
我想处理一个 HTTP POST 请求到达我的休息端点并将其主体转换为我定义的 POJO。我过去在 JSON 和 POJO 之间进行映射是成功的,但我正在努力处理这种形式的编码内容。
我有一个控制器如下:
@Slf4j
@RestController("/example")
public class GatewayController {
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public void describeInstances(@RequestBody MyPojo body) {
log.debug("Value1: " + body.getValue1());
}
}
还有一个 POJO:
@Data
public class MyPojo {
private String value1;
private String value2;
...
}
我正在向控制器发送一个 POST 请求,如下所示:
Content-Type: application/x-www-form-urlencoded
Body: value1=abc&value2=efg...
但我得到的只是 415 Unsupported Media Type
。感谢任何帮助。
编辑:当我将 POJO 更改为 String 并仅打印正文时,它可以工作(没有收到不受支持的媒体类型异常)所以它肯定在 POJO 声明中。
跟进:
是否可以注释 POJO 属性以允许字段的不同名称(例如,避免在变量名称中使用 undorscope)?
类似于:
@Attribute("value_name")
private String valName;
@ModelAttribute
是在控制器中获取表单数据的推荐方式。例如
public void describeInstances(@ModelAttribute("mypojo") MyPojo body)
和
@Data
@ModelAttribute("mypojo")
public class MyPojo {
阅读 spring 文档了解更多信息 here
我想处理一个 HTTP POST 请求到达我的休息端点并将其主体转换为我定义的 POJO。我过去在 JSON 和 POJO 之间进行映射是成功的,但我正在努力处理这种形式的编码内容。
我有一个控制器如下:
@Slf4j
@RestController("/example")
public class GatewayController {
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public void describeInstances(@RequestBody MyPojo body) {
log.debug("Value1: " + body.getValue1());
}
}
还有一个 POJO:
@Data
public class MyPojo {
private String value1;
private String value2;
...
}
我正在向控制器发送一个 POST 请求,如下所示:
Content-Type: application/x-www-form-urlencoded
Body: value1=abc&value2=efg...
但我得到的只是 415 Unsupported Media Type
。感谢任何帮助。
编辑:当我将 POJO 更改为 String 并仅打印正文时,它可以工作(没有收到不受支持的媒体类型异常)所以它肯定在 POJO 声明中。
跟进:
是否可以注释 POJO 属性以允许字段的不同名称(例如,避免在变量名称中使用 undorscope)?
类似于:
@Attribute("value_name")
private String valName;
@ModelAttribute
是在控制器中获取表单数据的推荐方式。例如
public void describeInstances(@ModelAttribute("mypojo") MyPojo body)
和
@Data
@ModelAttribute("mypojo")
public class MyPojo {
阅读 spring 文档了解更多信息 here