我有一个Rest服务,它以JSON格式发送数据,如下所示:
{result:"success",message:"token"}
用于获得上述响应的HttpClient Post函数
getAuthResponse(username: string, password: string): Observable<Callback> {
return this.http.post<Callback>('https://rest-service-url/Prod/authenticate', {
'operation': 'AuthUser',
'data': {
'username': username,
'password': password
}
});
}
回调课程
export class Callback {
constructor(
public result: string,
public message: string
) {}
}
我的getAuthResponse正在返回一个Observable的自定义类型回调。
现在我正尝试在我的其他服务中提取消息,如下所示。
this.dataservice.getAuthResponse(username, password).subscribe(
res => {
const callback = <Callback>res;
console.log(callback.message);
}
);
我可以打印res,我会看到JSON格式的响应,如下所示
{result:"success",message:"some message"}
但是当我尝试打印callback.message时,我得到了未定义。
我在新的HttpClient模块中读到,http.post会自动将响应映射到指定的类型。这是真的还是我们需要将它显式地映射到回调类(在mycase中)?
您可以帮我从我的帖子回复中提取消息值吗?
答案 0 :(得分:0)
我找到了解决办法。问题在于我的休息服务发布的自定义响应。我将响应数据格式化为我的休息服务中的json,我能够毫无问题地提取值。
修改强> 最初我的Node.js Rest服务中的回调代码是
callback('{"result":"success","message": "' + jwtToken + '"}');
我将其更改为
var callbackMsg = {
'result': 'success',
'message': jwtToken
};
callback(callbackMsg);