API
add(data) {
return this.httpClient.post<any>('/api/v3/templates', data);
}
Observable
this.templateService.add(obj)
.subscribe(
(response) => {
console.log(reposne)
},
(error) => {
console.log(error)
}
);
My Post API回复了一些错误,其中一些消息作为响应,因为名称已经存在但是我无法得到错误的对象打印到控制台
The object which is printed is
{
error:null
headers:HttpHeaders {normalizedNames: Map(0), lazyUpdate: null,
lazyInit: ƒ}
message:"Http failure response for http://localhost/api/v3/templates:
400 Bad Request"
name:"HttpErrorResponse"
ok:false
status:400
statusText:"Bad Request"
url:"http://localhost/api/v3/templates"
}
如何将我收到的消息作为我的错误收到回复 对象没有该响应主体。
答案 0 :(得分:1)
返回的错误通常是HttpErrorResponse的一个实例,其中error
属性包含包装错误(客户端或服务器)
https://angular.io/guide/http#getting-error-details
通常你应该能够像这样处理错误。
add(data) {
return this.httpClient.post<any>('/api/v3/templates', data)
.pipe(
catchError(this.handleError)
);
}
private handleError(error: HttpErrorResponse) {
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.error}`);
}
// return an ErrorObservable with a user-facing error message
return new ErrorObservable(
'Something bad happened; please try again later.');
};
如果error
属性为null,则可能是因为服务器没有返回任何内容。您是否使用邮递员或其他工具检查服务器是否返回了相应的响应?
答案 1 :(得分:0)
在Observable中有三个选项。
还有其他人喜欢地图,去抖等等。
data2 = ['12345678', '23456789', '34567890']
part_list = ['12345678 - Nanners', '23456789 - Nannu Nannu', '34567890 - ROFL Stomp']
for b in data2:
for part in part_list:
if b in part :
print part
我认为你的情况是错误可能不会出现在http标准中,可能会进入订阅状态。
因此,检查自定义消息是否接下来而不是错误。
答案 2 :(得分:0)
您可以使用typed response:
在error
通知类型上,您可以使用以下内容:
err => {
this.localErrorResponse = err as ErrorResponse;
this.message= this.localErrorResponse.message;
}
之前,在你的课堂上:
import { ErrorResponse } from './error-response';
...
localErrorResponse: ErrorResponse;
message: string;
然后,您的ErrorResponse
就像:
import { HttpHeaders} from './http-headers';
export class ErrorResponse{
error: any;
headers: HttpHeaders;
message: string;
name: string;
ok: boolean;
status: number;
statusText: string;
url: string;
}
和班级HttpHeaders
export class HttpHeaders {
normalizedNames: any;
lazyUpdate: any;
lazyInit: any;
}
然后您可以映射其他一些变量,如message
(this.message
)