从Angular 5 HttpClient中的自定义后期响应中提取值

时间:2018-01-10 03:51:08

标签: angular httpclient

我有一个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中)?

您可以帮我从我的帖子回复中提取消息值吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决办法。问题在于我的休息服务发布的自定义响应。我将响应数据格式化为我的休息服务中的json,我能够毫无问题地提取值。

修改 最初我的Node.js Rest服务中的回调代码是

callback('{"result":"success","message": "' + jwtToken + '"}');

我将其更改为

var callbackMsg = {
                        'result': 'success',
                        'message': jwtToken
                    };
                    callback(callbackMsg);