向API发送GET请求时,我总是收到错误(因此响应将落入CATCH而不是TRY),即使是艰难状态也是200。
以下是请求:
// Check if user exists at blur on email input authentication
checkUserExists( platformId: string, email: string) {
return this.http.get(checkUserExistsAPI + `/${platformId}/${email}`);
}
当我使用Angular 5时,我取下了.map(res)。
这是使用请求的函数:
// Verify if emails exists
verifyEmail(email) {
if (email) {
this.authenticationService.checkUserExists( this.platformId, email )
.subscribe(
(data: CheckEmailResponse) => {
console.log(data);
},
(error: CheckEmailResponse) => {
console.log(error);
}
);
}
}
它永远不会是console.log(数据),因为我总是收到此错误:
error:{
error: SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at XMLHttpRequest.onLo…, text: ""}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message:"Http failure during parsing for http://API.com"
name:"HttpErrorResponse"
ok:false
status:200
statusText:"OK"
答案 0 :(得分:2)
好的,我明白了。 响应没有任何内容正文,默认情况下,Angular 5期望一个Json格式的内容正文,因此它无法工作。无论如何我只需要状态响应来知道它是200还是404。
我在上面的请求中添加了{ responseType: 'text' }
:
return this.http.get(checkUserExistsAPI +
/ $ {platformId} / $ {电子邮件} , { responseType: 'text' });
所以现在它设法转到我的TRY / CATCH的TRY,数据等于&#34; null&#34;。但我并不关心数据,因为我只关心地位。无论如何,现在如果状态是200,它将进入TRY,如果状态是404,它将进入CATCH。
答案 1 :(得分:0)
这是头部请求的目的。当您不需要该对象时,只需有关该对象的元数据,例如状态码。看到: https://angular.io/api/common/http/HttpClient#head