【问题标题】:HTTP GET Request in Angular 7 returning Error (status 200)Angular 7 中的 HTTP GET 请求返回错误(状态 200)
【发布时间】:2019-03-26 23:42:48
【问题描述】:

我相信我从 wikimedia API 得到了一个对象,但是不知道如何解析它以显示。

//app.component.ts

import { Component } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Post } from './post';
import { Observable } from 'rxjs/Observable';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  title = 'Wiki Search';
  // readonly ROOT_URL = 'https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=japan&origin=*&format=json';
  readonly ROOT_URL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=Harry Potter&origin=*&callback=JSON_CALLBACK';
  // https://en.wikipedia.org/w/api.php?action=query&format=json&gsrlimit=15&generator=search&origin=*&gsrsearch=japan"


  posts: Observable<any>;

  constructor(private http: HttpClient) {}

  getPosts(){
    this.posts = this.http.get(this.ROOT_URL)
  }
}

//app.component.html
<input type="text" placeholder="Search for pages..">
<button (click)="getPosts()">Get Posts</button>
<div *ngFor="let post of posts | async">
 {{ post | json }}
</div>

<ul class=filter-select>
  <li class="filter-select-list">
    <p class="wiki-page"></p>
  </li>
</ul>

如果我将 responseType: text 插入响应处理程序,我可以在开发控制台中将返回的数据作为错误读取。

【问题讨论】:

    标签: javascript angular get angular7


    【解决方案1】:

    您调用的 URL 以 queryString 参数 callback=JSON_CALLBACK 结尾

    https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=Harry%20Potter&origin=*&callback=JSON_CALLBACK
    

    这是将 JSON 包装在名为 JSON_CALLBACK 的回调方法中,这不是有效的 JSON,并且不允许解析。我尝试不使用该 queryString 参数,现在响应是一个有效的纯 JSON,您应该能够解析它

    https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch=Harry%20Potter&origin=*
    

    【讨论】:

    • 对不起,我的问题更多是如何解析返回值,不小心把 JSON_CALLBACK 留在了。使 Postman 中的 GET 返回有效的 JSON,但是当我以角度进行调用时,我得到一个错误:找不到“object”类型的不同支持对象“[object Object]”。或者错误:状态代码 200。我读过这很可能是由于非 JSON 被传回,但我所看到的只是有效的 JSON。
    猜你喜欢
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多