将两种方法合二为一

时间:2013-08-29 15:18:23

标签: java spring http

将这两种方法转换为一种方法的最佳方法是什么?

@RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<String> dbStatus() {
        return statusService.isDbAlive() ? RESPONSE_DB_UP : RESPONSE_DB_DOWN;
    }

    @RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<String> appStatus() throws IOException {
        return statusService.isAppAlive() ? RESPONSE_APP_UP : RESPONSE_APP_DOWN;
    }

我可以返回List ResponseEntity<String>吗?

2 个答案:

答案 0 :(得分:1)

您必须返回类似JSON的内容,以显示两项检查的结果。例如

{"isAppAlive" : true, "isDbAlive": false}

您可以自己构建此JSON字符串

@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<String> getStatus() throws IOException {
    String json = "{\"isAppAlive\":" + statusService.isAppAlive() + ",\"isDbAlive\""+ statusService.isDbAlive() +"}";
    return new ResponseEntity<String>(json, HttpStatus.OK);
}

或者建立一个像

这样的类
public class Status {
    // use private and getters/setters
    public boolean isAppAlive;
    public boolean isDbAlive; 
}

让Spring序列化您创建的Status对象

@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<Status> getStatus() throws IOException {
    Status status = new Status();
    status.isAppAlive = statusService.isAppAlive();
    status.isDbAlive = statusService.isDbAlive();
    return new ResponseEntity<Status>(status, HttpStatus.OK);
}

您始终可以statusService使用方法getStatus()返回已经设置了字段的Status对象。

然后,您的客户端可以解析JSON并检查每个状态。

答案 1 :(得分:0)

  @RequestMapping(value = "/testurl",
       method = { RequestMethod.GET, RequestMethod.POST })
  public ModelAndView dbStatus() {

             List<String>  status = new ArrayList<String>();
             status.add (statusService.isDbAlive() );
             status.add (statusService.isAppAlive() );
             ModelMap modelMap = new ModelMap();
             modelMap.put("status ", status );
             return new ModelAndView("statuspage.jsp", modelMap);

  }