为了账号安全,请及时绑定邮箱和手机立即绑定

在什么情况下,返回响应比编辑 HttpServletResponse 更好?

在什么情况下,返回响应比编辑 HttpServletResponse 更好?

HUH函数 2021-07-26 12:32:21
我目前发现了三种为带@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 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

这些是 Spring 特定的功能。如果您没有使用 Spring,则必须HttpServletResponse直接使用(假设您没有使用其他框架)。

如您所见,当您可以直接从方法中查看状态代码和响应类型而不必查看内部时,代码看起来更具可读性。

所以经验法则是,HttpServletResponse除非你需要,否则不要直接使用,你不应该经常这样做。它没有什么不好,但是使用 Spring 的注释进行编码会更清晰。


查看完整回答
反对 回复 2021-08-04
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信