就是前端请求一个RESTful接口,如果该接口业务异常,那就是返回的时候JSON数据。
如果业务正常,需要自动302到一个外部页面。
目前有两个解决方案:
1.业务正常也返回JSON,Status200,把302的URL带在JSON里由前端处理
2.操作RestController中请求的response,手动写入HttpStatus和相关URL,剩下的由前端自己来
有无更加优雅的解决方案?或者两种方案哪种更优雅
就是前端请求一个RESTful接口,如果该接口业务异常,那就是返回的时候JSON数据。
如果业务正常,需要自动302到一个外部页面。
目前有两个解决方案:
1.业务正常也返回JSON,Status200,把302的URL带在JSON里由前端处理
2.操作RestController中请求的response,手动写入HttpStatus和相关URL,剩下的由前端自己来
有无更加优雅的解决方案?或者两种方案哪种更优雅
也许你可以试试看这样。返回ModelAndView
完成重定向,返回 ResponseEntity
响应JSON。
@GetMapping("/test")
public Object test () {
boolean ret = false;
if (ret) {
// 执行成功,重定向
return new ModelAndView("redirect:https://springboot.io");
}
// 执行异常,响应JSON
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body(Collections.singletonMap("success", false));
}
i will 康康
第一种合理吧 起码知道异常 可以自己选择性redirect 而且接口数据格式统一好点
return new ModelAndView("redirect:https://springboot.io");
和
return ResponseEntity
.status(HttpStatus.FOUND)
.location(URI.create("https://springboot.io"))
.body(/*some object*/);
尝试了一下,这两种方法都不错
个人建议第二种,因为如果前端拦截到的话也可以根据内容做一些额外处理