【问题标题】:Typescript - Angular http post打字稿 - Angular http 帖子
【发布时间】:2019-04-07 07:32:34
【问题描述】:

我正在构建一个自动完成功能。

1) 后端 RESTful 服务对部分输入的关键字返回以下响应。

JSON 响应

{
    "suggest": {
    "resultsuggest": [
      {
        "text": "Ke",
        "offset": 0,
        "length": 2,
        "options": [
          {
            "text": "Kevin Johnson",
            "_index": "customernames",
            "_type": "_doc",
            "_id": "1",
            "_score": 3
          }]
      }
  ]
}
}

2) 在 Angular 应用程序中,我应该怎么做才能从 JSON 响应中提取选项数组并将其返回给这个 fetch 函数? 注意 - 我想使用 Promise 而不是 Observable。

fetch(params?: HttpParams): Promise<any> {
        const query = params.get('query');
        const headers = new HttpHeaders().set("Content-Type", "application/json");
        let postData = "{ \"_source\": \"suggest\", \"suggest\": {\"resultsuggest\" : { \"prefix\" : \""+query+"\",\"completion\" : {  \"field\" : \"suggest\",  \"size\" : 5 }}}}";
        return this._http.post<any[]>('http://127.0.0.1:9200/customernames/_search?pretty',postData, {headers})
        .pipe(map(result=> {
                 // what should I do to extract the Options array from the JSON response and return it back in this fetch function??

                 return ????;
           }),
            delay(400)
        ).toPromise();
    }

感谢您的帮助!

谢谢!

更新: 1) JSON 响应是固定的。 2) 改回this._http.post&lt;any&gt; to return this._http.post&lt;any[]&gt;

【问题讨论】:

  • 请提供正确的 JSON。给定一个有错误。
  • 如果我的理解是正确的,这将起作用return JSON.parse(result).suggest.resultsuggest[0].options
  • 无需 AContent-Type 标头:HttpClient 自动添加。不需要 JSON.parse():HttpClient 会自动解析。无需发送 JSON 字符串:发送一个 JavaScript 对象,HttpCLient 自动发送为 JSON。阅读 HttpCLient 指南。这一切都得到了解释和记录。
  • 谢谢!这解决了这个问题。 map(result=> { return result.suggest.resultsuggest[0].options; }

标签: json angular typescript promise angular-httpclient


【解决方案1】:

正如 Arcteezy 建议的那样,以下方法起作用了

map(result=&gt; { return result.suggest.resultsuggest[0].options; }

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2019-06-20
    • 2018-04-15
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多