【发布时间】:2017-11-03 07:50:29
【问题描述】:
我有以下问题:
我在服务中有一个 http 发布请求。 请求返回一个对象:
export interface IResponse<T> {
Error:boolean
ErrorMessage:string
Data:T
}
如果在 php 或 mysql 中生成错误,则布尔值设置为 true 并显示一条消息。 来自服务的请求:
searchPersons(personSearchObject:PersonSearchObject){
//generate request here
return this.http.post(Config.ServerUrl, "data="+ request, options)
.map( (responseData) => {
this.personResponse = responseData.json()
if (!this.personResponse.Error){
this.persons.next(this.personResponse.Data)
return;
} else {
console.log(this.personResponse.ErrorMessage)
return Observable.throw(new Error(this.personResponse.ErrorMessage))
}
})
}
从控制器调用请求:
this.personSearchService.searchPersons(personSearchObject).subscribe(
result => {},
error => {
console.log("There was an error");
})
}
现在的问题是控制器中的 error=> 仅在例如 php 后端关闭时才会被命中,而不是当我从服务中抛出错误时。
如何通知控制器请求的响应中有错误?
另一个问题是我可以简单地在控制器中省略结果,只捕获错误吗?
谢谢,
【问题讨论】:
-
如果您的后端不是返回状态为 200 成功的响应,而是指示实际上存在错误的主体,尊重 HTTP 标准并返回实际的错误响应,那么一切都会变得容易得多,状态为 500 内部错误。你为什么不这样做?