url{string | URL}options{Object} 接受与 [http.request()] 相同的options,但是method始终被设置为GET。 从原型继承的属性会被忽略。callback{Function}- 返回: {http.ClientRequest}
由于大多数请求都是不带请求体的 GET 请求,因此 Node.js 提供了这个便捷的方法。
这个方法与 [http.request()] 唯一的区别是,它将请求方法设置为 GET 并且会自动调用 req.end()。
由于 [http.ClientRequest] 章节中所述的原因,回调必须要消费响应的数据。
callback 调用时只有一个参数,该参数是 [http.IncomingMessage] 的实例。
获取 JSON 的示例:
http.get('http://nodejs.org/dist/index.json', (res) => {const { statusCode } = res;const contentType = res.headers['content-type'];let error;// 任何 2xx 状态码都表示成功的响应,但是这里只检查 200。if (statusCode !== 200) {error = new Error('请求失败\n' +`状态码: ${statusCode}`);} else if (!/^application\/json/.test(contentType)) {error = new Error('无效的 content-type.\n' +`期望的是 application/json 但接收到的是 ${contentType}`);}if (error) {console.error(error.message);// 消费响应的数据来释放内存。res.resume();return;}res.setEncoding('utf8');let rawData = '';res.on('data', (chunk) => { rawData += chunk; });res.on('end', () => {try {const parsedData = JSON.parse(rawData);console.log(parsedData);} catch (e) {console.error(e.message);}});}).on('error', (e) => {console.error(`出现错误: ${e.message}`);});
