我目前发现了三种为带@RestController注释的类中的端点编写响应的方法:@RestControllerpublic class StringController { @GetMapping("/1") public ResponseEntity<List<String>> getString1(){ return new ResponseEntity<>( new ArrayList<>( Arrays.asList("A", "B", "C", "D") ), HttpStatus.BAD_REQUEST ); } @GetMapping("/2") @ResponseStatus(HttpStatus.ACCEPTED) public List<String> getString2(){ return new ArrayList<>( Arrays.asList( "E", "F", "G", "H" ) ); } @GetMapping("/3") public void getString3(HttpServletResponse response ) throws IOException { ObjectMapper mapper = new ObjectMapper( ); response.setContentType( "application/json" ); response.setStatus( 321 ); List<String> list = new ArrayList<>( Arrays.asList( "E", "F", "G", "H" ) ); mapper.writeValue( response.getOutputStream(), list ); }}对于方法 1 和 2,它们只是返回一个响应。我不会真正询问两者之间的问题,因为我认为@ResponseStatus这只是一个新的补充。但是对于方法 3,它不返回响应,而是通过HttpServletResponse. 在什么情况下,创建和返回新响应比编辑HttpServletResponse?PS 我知道我的状态代码都是错误的,我只是在试验它们。
1 回答
![?](http://img1.sycdn.imooc.com/54584dd900014f6c02200220-100-100.jpg)
红颜莎娜
TA贡献1842条经验 获得超12个赞
这些是 Spring 特定的功能。如果您没有使用 Spring,则必须HttpServletResponse
直接使用(假设您没有使用其他框架)。
如您所见,当您可以直接从方法中查看状态代码和响应类型而不必查看内部时,代码看起来更具可读性。
所以经验法则是,HttpServletResponse
除非你需要,否则不要直接使用,你不应该经常这样做。它没有什么不好,但是使用 Spring 的注释进行编码会更清晰。
添加回答
举报
0/150
提交
取消