有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Spring rest返回

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

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

  1. # 1 楼答案

    您只需要将返回类型更改为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,以便客户端可以在需要时解析和使用