java - 如何转发 HTTP 响应

标签 java http request response http-status-codes

我有这样的流程 Client -> API A -> API B -> API A -> Client

这是 API B 中的端点。抛出异常时,我想将 HTTP 响应中的错误消息传递给我的客户端。

@RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {
        try {
            User user = userService.findUserById(userId);
            return new ResponseEntity<>(user.toString(),HttpStatus.OK);
        } catch (SampleException e) {
            log.error(e.getMessage());
            return new ResponseEntity<>(e.getMessage(),HttpStatus.BAD_REQUEST);
        }
    }

当我按照上面的方式进行时,这就是我的客户得到的。

{
    "timestamp": "2019-05-24T08:30:19.637+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "400 null",
    "path": "/getUser"
}

但是当我将代码更改为:

@RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public ResponseEntity<String> get (@RequestParam(name = "userId") String userId) {
        try {
            User user = userService.findUserById(userId);
            return new ResponseEntity<>(user.toString(),HttpStatus.OK);
        } catch (SampleException e) {
            log.error(e.getMessage());
            return new ResponseEntity<>(e.getMessage(),HttpStatus.OK);
        }
    }

回复:

<200,No such user has been found,[Content-Type:"text/plain;charset=UTF-8", Content-Length:"27", Date:"Fri, 24 May 2019 08:33:51 GMT"]>

它工作得很好,但我不想出现任何错误,因为 200 OK。有什么合理的方法可以解决吗?

最佳答案

好的,问题已经解决。在我的 API A 中,我使用的是 RestTemplate。我需要创建我的 ResponseErrorHandler,然后使用 restTemplate.setErrorHandler() 方法。谢谢你们的帮助。

关于java - 如何转发 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288756/

相关文章:

C套接字仅使用二进制数据造成内存泄漏

rest - HTTP DELETE 方法幂等性

java - 如何按 Map<String, Integer> 值的降序获取前 10 个键

java - 使用 Java 在 REST Web 服务中启用恢复中断下载

java - 无法使用 request.getParameter 捕获 Primefaces selectOneListBox

Java:重现捕获的请求

javascript - 无法获得 Angular 5 的响应标题

java - 使用数组实现列表

java - 谷歌应用引擎 JAVA : how to embed html in mail being sent while using java mail api on google app engine?

java - 加载 bean 定义时 Spring 挂起