Gel*_*elu 4 rest error-handling json http-status-codes angular
我有一个Angular 6客户端,它使用通过.Net Web Api开发的REST Api。
除错误处理外,其他所有东西都在工作。当我尝试处理错误以对不同的状态码(404、403、409、500 ...)做出不同反应时,我简直无法使其正常工作。HttpErrorResponse对象没有应假定的任何字段(例如“状态”或“错误”)。
我提供了一个超级简单的服务来重现该问题:
在service.ts上请求
public test(): Observable<any> {
let url = this.templatesUrl + '/myMethod';
console.log('GET myMethod ' + url);
return this.http.get<any>(url)
.pipe(catchError(this.handleError));
}
Run Code Online (Sandbox Code Playgroud)
错误处理程序(与官方文档相当直接):
private handleError(error: HttpErrorResponse) {
console.warn(error);
if (error.error instanceof ErrorEvent) {
// A client-side or network error occurred. Handle it accordingly.
console.error('An error occurred:', error.error.message);
} else {
// The backend returned an unsuccessful response code.
// The response body may contain clues as to what went wrong,
console.error(
`Backend returned code ${error.status}, ` +
`body was: ${error.message}`);
}
// return an observable with a user-facing error message
return throwError('Unexpected error');
}
Run Code Online (Sandbox Code Playgroud)
.Net方面的服务:
[HttpGet]
[Route("myMethod")]
public IHttpActionResult myDotNetMethod()
{
return InternalServerError(new Exception("Details about the issue"));
}
Run Code Online (Sandbox Code Playgroud)
调用该服务,并返回状态代码500和一个json对象:
响应状态:
响应标头是json:
json对象:
日志显示的内容:没有状态,几乎是一个空对象:
像HttpErrorResponse这样的松散几乎是空的。但是API的响应很好,状态代码也存在,并且json对象也存在。
我想念什么?
更新:如果您想知道日志中显示的“内部服务器错误”背后隐藏的是什么(这只是chrome生成的调用堆栈):
更新2:这是显微镜下的错误对象。它只是“内部服务器错误”。没有状态或消息的痕迹。
| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |