微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular Http 错误未与 Micronaut HttpResponse.serverError() 映射

如何解决Angular Http 错误未与 Micronaut HttpResponse.serverError() 映射

我有一个下面的 HTTP 客户端可以与 Micronaut API 通信

this.httpClient.request<T>(new HttpRequest(method,destinationUrl,options)).subscribe(
    (response: any) => {
      const responsTye = response as HttpEvent<any>
      switch (responsTye.type) {
        case HttpEventType.Sent:
          this.logger.info('Http Client : Sent ->','Request sent!');
          break;
        case HttpEventType.ResponseHeader:
          this.logger.info('Http Client : ResponseHeader ->','Response header received!');
          break;
        case HttpEventType.DownloadProgress:
          const kbLoaded = Math.round(responsTye.loaded / 1024);
          this.logger.info('Http Client : DownloadProgress ->',`Download in progress! ${kbLoaded}Kb loaded`);
          break;
        case HttpEventType.Response:
          observer.next(response.body);
          this.logger.info('Http Client : Response -> ? Done!',responsTye.body);
      }
    },(error) => {
      switch (error.status) {
        case HttpStatusCode.FORBIDDEN:
          this.isHttpError = true;
          break;
        case HttpStatusCode.BAD_REQUEST:
          this.isHttpError = true;
          break;
        case HttpStatusCode.UNAUTHORIZED:
          this.isHttpError = true;
          break;
        case HttpStatusCode.INTERNAL_SERVER_ERROR:
          this.isHttpError = true;
          break;
      }
      observer.error(error);
    }

现在从后端服务器响应 500 内部服务器错误,如果后面有什么东西坏了

@Fallback
@Retryable(attempts = "3")
public class CategoryClientFallback implements ICategoryOperation{
    @Override
    public Maybe<?> get(CategorySearchCriteria searchCriteria) {
        return Maybe.just(HttpResponse.serverError(ConstantValues.TAG_FALLBACK));
    }
}

服务器正在响应 500 内部服务器错误,我们也可以在 POSTMAN 中看到

enter image description here

前端调试,响应和POSTMAN一样

enter image description here

但是,如果出现 500 内部服务器错误,HTTP 客户端应该重定向错误部分,而不是 (response: any) 部分。

我无法理解的错误是来自后端还是 Angular HTTP 客户端的错误

我也有一个拦截器,但是错误没有在拦截器中处理

export class HttpFalconInterceptor implements HttpInterceptor {
    constructor(public authService: AuthService,private logger: LoggerService) { }
    intercept(request: HttpRequest<any>,next: HttpHandler): Observable<HttpEvent<any>> {
        // Get the auth token from the service.
        const authToken = this.authService.getAuthorizationHeaderValue();
        this.logger.info("Auth bearer token ",authToken);

        if (authToken) {
            request = request.clone({
                setHeaders: {
                    'Content-Type':  'application/json',Authorization: authToken
                }
            });
        }

        /**
            * continues request execution
        */
        return next.handle(request).pipe(catchError((error,caught) => {
            //intercept the respons error and displace it to the console
            this.logger.error(error);
            return of(error);
        }) as any);
    }
}

解决方法

我的拦截器有问题

这就是问题

return next.handle(request).pipe(catchError((error,caught) => {
            //intercept the respons error and displace it to the console
            this.logger.error(error);
            return of(error);
        }) as any);

改为

return next.handle(request)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?