Java Spring休息返回未经授权的json

时间:2015-08-11 17:31:23

标签: java json spring rest spring-mvc

目前正在开发一个java spring应用程序。它利用一个ui以及通过post请求发送/接收json的restful apis。

每个api请求都需要使用将随请求一起发送的令牌进行验证。此操作已完成,并返回一个布尔值。现在问题是当布尔值为false(令牌无效)时,我需要向最终用户返回401错误。目前我正在返回正在转换为json的List。如何向最终用户返回401错误。

实施例

   //done
    @RequestMapping(value = "/getSomething"
            , method = RequestMethod.POST
            , consumes = "application/json"
            , produces = "application/json")
    @ResponseBody
    public List<Obj> getSomething(@RequestBody Input f) {

        DAOImpl dAOImpl = (MapDAOImpl) appContext.getBean("DAOImpl");

        Boolean res =  dAOImpl.validateToken(f.session);
        if(res) {
            List<Obj> response = dAOImpl.getSomething(f.ID);
            return response;
        } else {

            return new ResponseEntity<String>("test", HttpStatus.UNAUTHORIZED);
        }

    } 

1 个答案:

答案 0 :(得分:10)

您只需将返回类型更改为ResponseEntity

@RequestMapping(value = "/getSomething"
        , method = RequestMethod.POST
        , consumes = "application/json"
        , produces = "application/json")
@ResponseBody
public ResponseEntity<?> getSomething(@RequestBody Input f) {

    DAOImpl dAOImpl = (MapDAOImpl) appContext.getBean("DAOImpl");

    Boolean res =  dAOImpl.validateToken(f.session);
    if(res) {
        List<Obj> response = dAOImpl.getSomething(f.ID);
        return new ResponseEntity<>(response, HttpStatus.OK);
    } 
    return new ResponseEntity<String>("Unauthorized", HttpStatus.UNAUTHORIZED);
} 

注意:我建议在错误响应中传递正确的JSON,以便客户端可以解析并在需要时使用。