缺少必需的get参数angular 4

时间:2017-09-25 13:19:44

标签: angular http typescript observable

我正在按如下方式获取控制台日志:“'缺少必需的'页'参数”。

我正在尝试将其设置为我的get请求中的参数,它似乎可以正常工作,因为我可以让控制台将params作为数组打印出来。

我错过了什么? 控制台照片:See this

谢谢!

服务:

export class StoriesService implements OnInit {

  private apiUrl = 'https://dev-api.byrd.news/v1/stories';

  constructor(private http: Http) {
    console.log("Yo! Stories!")
  }

  ngOnInit() { }

  getToken() {
    return Observable.fromPromise(firebase.auth().currentUser.getIdToken(true)
      .then((idToken) => {
        return idToken;
      }))
  }


  getData(page: string, feed: string, hits: string): Observable<any> {
    return this.getToken()
      .flatMap(idToken => {
        let headers = new Headers();
        headers.append('user_token', idToken);
        let params = new HttpParams()
          .set('page', page)
          .set('feed', feed)
          .set('hits', hits);
        let options = new RequestOptions({ headers: headers, params: params });
        // console.log(this.idToken, options);
        console.log("Token: " + idToken);
        console.log(headers, params);
        return this.http
          .get(this.apiUrl, { params, headers })
          .map((response: Response) => {
            console.log("Breakthrough!")
            return response.json() || {};
          })
      })
      .catch(this.handleError);
  }

  private handleError(error: Response) {
    return Observable.throw(error.statusText);
  }

组件:

  getStories() {
    this.storiesService.getData('0', 'latest', '6')
    .subscribe(data => {
      console.log(data);
      console.log("Ikke mere data")
    })
  }

编辑: 这是我得到的URL。对我来说,params看起来有点滑稽,还是因为它没有被解开?

https://dev-api.byrd.news/v1/stories?updates=%7B%22param%22:%22page%22,%22value%22:%220%22,%22op%22:%22s%22%7D&updates=%7B%22param%22:%22feed%22,%22value%22:%22latest%22,%22op%22:%22s%22%7D&updates=%7B%22param%22:%22hits%22,%22value%22:%226%22,%22op%22:%22s%22%7D&cloneFrom=%7B%22updates%22:null,%22cloneFrom%22:null,%22encoder%22:%7B%7D,%22map%22:null%7D&encoder=%7B%7D&map=null

1 个答案:

答案 0 :(得分:0)

看起来服务器只是发送给你。然后问题不在于Angular,而在于你正在做的请求。

编辑:请求确实看起来有点奇怪。 RequestOptions的文档似乎表示params应该是URLSearchParams,而不是HttpParams。也许这就是问题。