我目前发现了三种方法来编写带有StartDate
注释的类中的端点响应:
@RestController
对于方法1和2,它们只是返回一个响应。因为我认为@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 );
}
}
只是一个新的增加,所以我真的不会在这两者之间询问。
但是对于方法3,它不返回响应,而是通过@ResponseStatus
来编辑响应本身。 在什么情况下,与编辑HttpServletResponse
相比,创建并返回新响应是更好的选择吗?
P.S。我知道我的状态码都错了,我只是在尝试它们。
答案 0 :(得分:1)
这些是Spring的特定功能。如果您不使用Spring,则必须直接使用for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(figOutVar[i][j] == 0){
figOutVar[i][j] = //here you can replace the zero with something else
}
}
}
(假设您没有使用其他框架)。
如您所见,当您直接从方法中看到状态代码和响应类型而不必查看内部时,代码看起来更具可读性。
因此,经验法则是,除非需要,否则不要直接使用HttpServletResponse
,并且不必经常这样做。没什么不好,但是使用Spring的注释进行编码更干净。