次のhttp呼び出しのステータスコードを取得し、文字列として返す必要があります
//This method must return the status of the http response
confirmEmail(mailToken):Observable<String>{
return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken)
.map(this.extractData)
.catch(this.handleError);
}
tHX!
Angular> = 4.3(8を含む)のバージョンに対する回答を、HttpClient
を置き換える新しいhttp
に追加する]
import {HttpClientModule} from '@angular/common/http'; // Notice it is imported from @angular/common/http instead of @angular/http
応答コードまたはその他のヘッダーを取得する方法:
http.get(
`${this.baseUrl}users/activate?mailToken=${mailToken}`,
{observe: 'response'}
)
.subscribe(response => {
// You can access status:
console.log(response.status);
// Or any other header:
console.log(response.headers.get('X-Custom-Header'));
});
@Rbkのコメントに記載されているように、
オブジェクト{observe: 'response'}
は、完全な応答オブジェクトを利用可能にするものです。
次のようにコードを修正して、フィールドにresponseStatusを保存します。
responseStatus: number;
//This method must return the status of the http response
confirmEmail(mailToken):Observable<String> {
//Edited for working with HttpClient on Angular >= 4.3
return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken, {observe: 'response'})
.map((response: Response) => {
this.responseStatus = response.status;
return this.extractData(response);
}
.catch(this.handleError);
}
そして、コンポーネントのHTMLテンプレートに表示します:
<p class='responseStatus'>{{responseStatus}}</p>
これは私がそれをやった方法です:
checkResponse() {
this.http.get(this.url, { observe: 'response' })
.subscribe(response => console.log(response.status));
}
Angular 7。
簡単だ !!
ExtractData関数内
extractData (res){
//res.status will be your status code
// res.statusText will be your status Text
}
クエリパラメータとその他のオプションがある場合は、追加する必要があります
{ observe: 'response', params: new HttpParams() }
2番目の引数として。get、.post、.patch etcメソッドに。その後、コールバックresponse.statusを介してアクセスできます。あなたが私のような人で、これを行う必要がある場合は、同じ配列にパラメーターオプションを入れてください。
create(resource: Resource, query?: Query): Observable<Resource> {
return this._httpClient
.post(`${this._apiUrl}${this._endpoint}`, this._serializer.toJson(resource), {
params: query ? new HttpParams({ fromObject: query.toOData() }) : null,
observe: 'response'
})
.map(
(response): Resource => {
this.handleStatusCode(response.status);
try {
return this._serializer.fromJson(response);
} catch (err) {
throw new Error(`Error parsing resource. Details: ${err}`);
}
}
);
}
confirmEmail(mailToken):Observable<String> {
return this.http.get(this.baseUrl+"users/activate?mailToken="+mailToken)
.pipe(map(data => {
return data.httpStatus
}));
.catch(this.handleError);
}
これで問題が解決することを願っています。