Spring Boot REST:@DeleteMapping消耗form_urlencoded不能按预期工作

时间:2016-12-07 13:42:40

标签: java spring spring-boot

我使用的是Spring boot 1.4.0,请考虑@RestController中的以下代码,我期望的是,服务器端将收到带有form_urlencoded内容类型的http主体,但不幸的是它要求我query参数类型emailtoken。这里的问题是什么以及如何解决?

@DeleteMapping(consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void removeAdmin(@RequestParam(value = "email") String email, @RequestParam(value = "token") String token) {
    //...
}

1 个答案:

答案 0 :(得分:2)

@DeleteMapping只是提供@RequestMapping(method=DELETE)的便利扩展。它不会处理请求参数。如果需要数据来执行工作,您仍需要在控制器方法签名中映射这些内容。

由于你想要一个身体,你可以创建一个对象并将其标记为@RequestBody:

public class DeleteBody {
    public String email;
    public String token;
}

public void removeAdmin(@RequestBody DeleteBody deleteBody) {
...
}