• 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 的示例:

    1. http.get('http://nodejs.org/dist/index.json', (res) => {
    2. const { statusCode } = res;
    3. const contentType = res.headers['content-type'];
    4. let error;
    5. // 任何 2xx 状态码都表示成功的响应,但是这里只检查 200。
    6. if (statusCode !== 200) {
    7. error = new Error('请求失败\n' +
    8. `状态码: ${statusCode}`);
    9. } else if (!/^application\/json/.test(contentType)) {
    10. error = new Error('无效的 content-type.\n' +
    11. `期望的是 application/json 但接收到的是 ${contentType}`);
    12. }
    13. if (error) {
    14. console.error(error.message);
    15. // 消费响应的数据来释放内存。
    16. res.resume();
    17. return;
    18. }
    19. res.setEncoding('utf8');
    20. let rawData = '';
    21. res.on('data', (chunk) => { rawData += chunk; });
    22. res.on('end', () => {
    23. try {
    24. const parsedData = JSON.parse(rawData);
    25. console.log(parsedData);
    26. } catch (e) {
    27. console.error(e.message);
    28. }
    29. });
    30. }).on('error', (e) => {
    31. console.error(`出现错误: ${e.message}`);
    32. });