Angular 为什么错误对象没有状态代码和状态消息?
以下是场景: 服务类从swagger编辑器生成,并导入到我的Angular项目中 有不同的端点,为了回答这个问题,我在下面发布一个主要端点Angular 为什么错误对象没有状态代码和状态消息?,angular,swagger-2.0,swagger-codegen,Angular,Swagger 2.0,Swagger Codegen,以下是场景: 服务类从swagger编辑器生成,并导入到我的Angular项目中 有不同的端点,为了回答这个问题,我在下面发布一个主要端点 public getCompanies(pageNumber: string, pageSize: string, sortOrder: string, observe?: 'body', reportProgress?: boolean): Observable<Array<Company>>; public getCompanie
public getCompanies(pageNumber: string, pageSize: string, sortOrder: string, observe?: 'body', reportProgress?: boolean): Observable<Array<Company>>;
public getCompanies(pageNumber: string, pageSize: string, sortOrder: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<Array<Company>>>;
public getCompanies(pageNumber: string, pageSize: string, sortOrder: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<Array<Company>>>;
public getCompanies(pageNumber: string, pageSize: string, sortOrder: string, observe: any = 'body', reportProgress: boolean = false ): Observable<any> {
if (pageNumber === null || pageNumber === undefined) {
throw new Error('Required parameter pageNumber was null or undefined when calling getCompanies.');
}
if (pageSize === null || pageSize === undefined) {
throw new Error('Required parameter pageSize was null or undefined when calling getCompanies.');
}
if (sortOrder === null || sortOrder === undefined) {
throw new Error('Required parameter sortOrder was null or undefined when calling getCompanies.');
}
let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
if (pageNumber !== undefined) {
queryParameters = queryParameters.set('pageNumber', <any>pageNumber);
}
if (pageSize !== undefined) {
queryParameters = queryParameters.set('pageSize', <any>pageSize);
}
if (sortOrder !== undefined) {
queryParameters = queryParameters.set('sortOrder', <any>sortOrder);
}
let headers = this.defaultHeaders;
// authentication (oauth) required
if (this.configuration.accessToken) {
let accessToken = typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken()
: this.configuration.accessToken;
headers = headers.set('Authorization', 'Bearer ' + accessToken);
}
// to determine the Accept header
let httpHeaderAccepts: string[] = [
'application/json'
];
let httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
if (httpHeaderAcceptSelected != undefined) {
headers = headers.set("Accept", httpHeaderAcceptSelected);
}
// to determine the Content-Type header
let consumes: string[] = [
'*/*'
];
return this.httpClient.get<Array<Company>>(`${this.basePath}/companies`,
{
params: queryParameters,
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
reportProgress: reportProgress
}
);
}
这里仅出于测试目的,我使用控制台查看状态消息。我测试了一个案例,其中服务器返回未经授权的401
。error.status始终包含0
在浏览器网络窗口中,我看到错误代码为401,但在angular中,它始终具有状态代码0和状态文本“未知错误”。为什么会发生这种情况?这可能是因为ErrorResponse对象没有“status”属性(至少在生成代码时使用了swagger code gen 2.3.1)。您是否尝试访问error.code或error.message
this._myservice.getCompanies( page, size, sortOrder ).subscribe(
(response) => {
console.log("Success");
},
(error) => {
console.log("Error: " + error.status);
}
);