我目前发现了三种为带@RestController注释的类中的端点编写响应的方法:
@RestController
public 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 我知道我的状态代码都是错误的,我只是在试验它们。
红颜莎娜
相关分类