Mic*_* Dz 3 java rest spring spring-mvc httpresponse
在我的Spring API中,我想用Spring的注释@ResponseStatus处理来自诸如create,put和delete之类的操作的响应 .每个端点都能正常工作,但它们始终返回空响应.
为什么来自带注释的端点的响应是空的?
控制器:
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.http.HttpStatus;
@RestController
@RequestMapping(value = "/v1/portfolios")
public class PortfolioController {
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void create(@RequestBody Portfolio resource) {
repo.save(resource);
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.OK)
public void delete(@PathVariable("id") String id) {
repo.removeById(id);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么来自带注释的端点的响应是空的?
因为你的方法返回void(没有身体的意思).状态代码 - 它不是一个正文.
您可以尝试此操作以返回具有消息明确性的响应:
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public ResponseEntity<String> delete(@PathVariable("id") String id) {
repo.removeById(id);
return new ResponseEntity<>("Your message here", HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
而不是ResponseEntity<String>你可以放ResponseEntity<YourCustomObject>,然后返回new ResponseEntity<>(yourCustomObject instance, HttpStatus.OK);它将在响应期间转换为JSON.
你也可以这样做:
@ResponseStatus(value = HttpStatus.OK, reason = "Some reason")
在这种情况下,您将返回以下内容:
{
"timestamp": 1504007793776,
"status": 200,
"error": "OK",
"message": "Some reason",
"path": "/yourPath"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |