使用Angular 2

时间:2016-07-20 20:59:06

标签: angularjs typescript angular

我正在尝试对YouTube Web API进行GET调用,但我无法弄清楚如何使用http.get函数传递参数。我使用了提琴手,并确保提出要求。我目前收到400错误,说我错过了参数“Part”。如何修改我的代码以在请求中包含所需的参数?

private _url = 'https://www.googleapis.com/youtube/v3/';
private _key = '';

getPlaylistVideos(playlistId, pageToken){

    var url = this._url + "playlistItems";
    var options =  { part: 'snippet', maxResults: 50, playlistId: playlistId, key: this._key, pageToken: pageToken }

    return this.http.get(url, options);

}

2 个答案:

答案 0 :(得分:1)

您需要将搜索参数包含在您的请求中。我认为这对你有用:

getPlaylistVideos(playlistId, pageToken) {
    let url = `${this._url}playlistItems`,
        options =  { part: 'snippet', maxResults: 50, playlistId: playlistId, key: this._key, pageToken: pageToken }, 
        params = URLSearchParams();

    for (let key in options) params.set(key, options[key);

    return this.http.get(url, {search: options});
}

使用set方法创建URLSearchParams,您可以找到完整的文档here

答案 1 :(得分:0)

请看看已经问过的&解决了关于AngularJS& YouTube V3 API。 See here感谢@Sandeep Sukhija

无论如何,关于缺少的参数part,请将其添加到请求ex:part: 'snippet'

示例代码:

function getPlaylistVideos(playlistId, pageToken) {
    // pass the page token as a parameter to the API
    $.get('https://www.googleapis.com/youtube/v3/playlistItems', { part: 'snippet', maxResults: 50, playlistId: playlistId, key: key, pageToken: pageToken })
}
  

如何使用零件参数

     

part参数是任何API请求的必需参数   检索或返回资源。该参数标识一个或多个   应包含在其中的顶级(非嵌套)资源属性   API响应。例如,视频资源具有以下内容   部分:

     

snippet contentDetails fileDetails player processingDetails   recordingDetails统计状态建议topicDetails