http.get(url[, options][, callback])
-
options
<Object> 接受与http.request()
相同的options
,方法默认设置为 GET。¥
options
<Object> Accepts the sameoptions
ashttp.request()
, with the method set to GET by default. -
callback
<Function> -
¥Returns: <http.ClientRequest>
由于大多数请求是没有正文的 GET 请求,因此 Node.js 提供了这个便捷的方法。该方法与 http.request()
唯一的区别是它默认设置方法为 GET 并自动调用 req.end()
。因为 http.ClientRequest
章节所述的原因,回调必须注意消费响应数据。
¥Since most requests are GET requests without bodies, Node.js provides this
convenience method. The only difference between this method and
http.request()
is that it sets the method to GET by default and calls req.end()
automatically. The callback must take care to consume the response
data for reasons stated in http.ClientRequest
section.
callback
使用单个参数(http.IncomingMessage
的实例)调用。
¥The callback
is invoked with a single argument that is an instance of
http.IncomingMessage
.
获取 JSON 的示例:
¥JSON fetching example:
http.get('http://localhost:8000/', (res) => {
const { statusCode } = res;
const contentType = res.headers['content-type'];
let error;
// Any 2xx status code signals a successful response but
// here we're only checking for 200.
if (statusCode !== 200) {
error = new Error('Request Failed.\n' +
`Status Code: ${statusCode}`);
} else if (!/^application\/json/.test(contentType)) {
error = new Error('Invalid content-type.\n' +
`Expected application/json but received ${contentType}`);
}
if (error) {
console.error(error.message);
// Consume response data to free up memory
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(`Got error: ${e.message}`);
});
// Create a local server to receive data from
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({
data: 'Hello World!',
}));
});
server.listen(8000);