当前位置: 首页 > 知识库问答 >
问题:

节点。js https获取请求

方和豫
2023-03-14

我正在尝试在后端节点中发出http请求。js web app。我可以在前端web javascript文件上发出成功的完整http请求,如下所示:

            $.ajax({
                url: `https://api.spotify.com/v1/artists/${artistId}/albums`,
                type: 'GET',
                contentType: 'application/json',
                headers: {
                    'Authorization': 'Bearer ' + globalAccesToken,
                },
                data: {
                    offset: offset,
                }
            }).done(function callback(response) {
           
                    resolve(response.items)
               
            }).fail(async function (error) {
getArtistAlbums(artistId, offset, onlyReturnTracks))
            });

并遵循本指南:https://nodejs.dev/learn/make-an-http-post-request-using-nodejs

我一直试图在node中发出相同的请求。js后端:

    //get access token
    let accessToken = await spotifyAuth.getAccessToken();
    
    //create data
    const data = JSON.stringify({
      offset: 0,
    })

    //create options data obj
    const options = {
      hostname: 'https://api.spotify.com',
      path: '/v1/artists/1XqqyIQYMonHgllb1uysL3/albums',

      //url: 'https://api.spotify.com/v1/artists/1XqqyIQYMonHgllb1uysL3/albums',
      method: 'GET',
      headers: {
        'Authorization': 'Bearer ' + accessToken,
      },
    }

    const req = https.request(options, res => {
      console.log(`proxyiprequest() statusCode: ${res.statusCode}`)
      res.on('data', d => {
        process.stdout.write(d)
      })
    })
    
    req.on('error', error => {
      console.error('proxyiprequest() err=', error)
    })
    
    req.write(data)
    req.end()

但运行上述请求会导致以下错误:

proxyiprequest() err= { Error: getaddrinfo ENOTFOUND https://api.spotify.com https://api.spotify.com:443
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'https://api.spotify.com',
  host: 'https://api.spotify.com',
  port: 443 }

我设置url/path设置的方式有问题吗?

共有1个答案

毋宸
2023-03-14

节点https模块有一个名为protocol的单独选项。因此,在请求选项中,不应包含https://or http://。

您的选项变量将变为:

const options = {
  hostname: 'api.spotify.com',
  path: '/v1/artists/1XqqyIQYMonHgllb1uysL3/albums',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer ' + accessToken,
  },
}
 类似资料:
  • 我在循环中的节点JS中发送这样的GET请求 由于响应是异步的,是否可以在响应中获取原始请求URL? 谢谢!

  • 我用请求模块和异步模块的组合并行爬行了很多链接 我注意到很多和错误,尽管使用chrome可以访问链接并快速响应。 在请求选项中,我将限制为2,将限制为10000。我使用限制为2的来减少每次请求的并行性。所以我有2套接字,2个请求和10秒的超时时间来等待来自服务器的头响应,但我得到了这些错误。 在这里s我使用的请求配置: 以下是我用来生成链接的代码片段: 我听了错误事件,我看到每当错误代码为时,co

  • 问题内容: 我正在使用node-request模块,定期将GET请求发送到一组URL,有时在某些站点上出现以下错误。 问题是,有时我不会总是或在某些URL上始终遇到此错误。同样,不能使用“ ” 将其忽略。 我已经读到这可能与我使用错误的协议(SSLv2,SSLv3,TLS ..)发送SSL请求有关。但这并不能解释为什么它会不定期发生。 顺便说一句,我正在Win 2008服务器上运行nodejs。

  • 在本章中,将学习如何获取XML DOM对象的节点值。 XML文档具有称为节点的信息单元的层次结构。 对象有一个属性 - ,它返回元素的值。 在以下部分中,将讨论学习 - 获取元素的节点值 获取节点的属性值 以下所有示例中使用的node.xml如下所示 - 1. 获取节点值 使用方法以文档顺序返回具有给定标记名称的所有元素的。 示例 以下示例(getnode example.html)将XML文档(

  • 一个节点就象征着一个数据,现在的或者未来的,它是一种预期,所以我们也对应的有获取即时值和获取未来值两种方式。 获取即时值 对于一个节点来说,访问T value属性是最简单有效的形式,但是由于空值,我们可能需要特殊注意一下: EZRMutableNode<NSNumber *> *node = [EZRMutableNode new]; NSNumber *value = node.value;