当 RestApi 有 Spring 的 ResponseEntity<void> 有返回值时,它返回 ClientProtocolException

Sun*_* VP 4 java rest spring

我暴露了一个 RestApi,在这种情况下,它会将状态返回给客户端。方法的方法签名是ResponseEntity<void> methodName(){}。这个方法是一个deleteApi。

在 return 中responseEntity只创建Status OK并没有附加正文或任何其他标题详细信息。

ClientProtocolException在进行调用时获得的日志中看到,当通过 REST 客户端(邮递员)执行相同操作时Status OK,在响应中收到了正确的消息。

  • ClientProtocolException提高时的原因是什么?

  • 如果返回类型是ResponeEntity<Void>必须发送 body 吗?

  • 如何避免出现上述异常?

代码:

 @RequestMapping(method = RequestMethod.DELETE)
public ResponseEntity<Void> methodName()
{
   // your business logic 
    return new ResponseEntity<Void>(HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

小智 13

尝试如下

@RequestMapping(method = RequestMethod.DELETE)
public ResponseEntity<Void> methodName() { 
    // your business logic 
    return ResponseEntity.noContent().build();
}
Run Code Online (Sandbox Code Playgroud)