我想处理一个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属性以允许不同的字段名称(例如,避免在变量名称中使用undorscope)?
类似的东西:
@Attribute("value_name")
private String valName;
答案 0 :(得分:2)
@ModelAttribute
是在控制器中获取表单数据的推荐方法。例如
public void describeInstances(@ModelAttribute("mypojo") MyPojo body)
和
@Data
@ModelAttribute("mypojo")
public class MyPojo {
阅读春季文档了解更多信息here