【问题标题】:How to redirect to external url if method return ResponseEntity<Object>如果方法返回 ResponseEntity<Object>,如何重定向到外部 url
【发布时间】:2026-01-07 18:50:01
【问题描述】:

我在控制器中有返回 ResponseEntity 对象的方法

@RequestMapping(method = RequestMethod.GET)
    public ResponseEntity<Object> processInsert(HttpServletRequest request) {
    return insertService.handleInsert(request);
}

public ResponseEntity<Object> handleInsert(HttpServletRequest request) {
    Map<String, String[]> params = request.getParameterMap();

    User user = createUser(params, request);
    return new ResponseEntity<Object>(user, HttpStatus.OK);
}

现在执行它时,它会在浏览器中返回 JSON,如果我需要让这个方法返回 ResponseEntity 对象,我怎样才能让它重定向到某个 URL,例如 www.google.com

【问题讨论】:

  • 从春天检查documentation
  • @CodeMatrix 我看到了这个文档,但是我找不到我需要的例子
  • 将返回 type 更改为 String 并返回 "redirect:http://www.google.com"

标签: java spring spring-boot


【解决方案1】:

我认为我没有完全理解您的问题,如果您希望返回 ResponseEntity 然后重定向到另一个页面,重定向后此信息将丢失。 如果你希望你的端点被重定向到另一个页面,你需要从你的控制器方法中返回一个 String 类型,像这样:

@RequestMapping(path = { "/testRedirect" }, method = { RequestMethod.GET})
public String testRedirect() {
    return "redirect:http://www.google.com";
}

如果您想显示错误或其他内容,以防您的程序由于输入数据不正确或其他原因而出现异常,您可以执行以下操作:

@RequestMapping(path = { "/testRedirect" }, method = { RequestMethod.GET})
public String testRedirect(HttpServletResponse servletResponse) {
    // if error occurs
    servletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
        "explained error");
    return null; // return null to indicate your program that the request has finished with the error.
    // if all works correctly return the redirect String.
    return "redirect:http://www.google.com";
}

【讨论】:

  • 嗨,我已经编辑了我的问题,并为此方法 handleInsert 添加了代码。问题是我需要首先检查用户的类型,然后重定向到正确的 url。例如,如果他是管理员重定向到 google.com,在其他情况下重定向到 youtube.com。你知道做这个的最好方法是什么