웹 개발 과정에서 백엔드에 요청을 보내거나, 데이터를 얻거나, 일부 작업을 수행해야 하는 경우가 종종 있습니다. Node.js는 요청을 보내고 반환된 콘텐츠를 처리하는 빠르고 쉬운 방법을 제공합니다. 이 기사에서는 Node.js를 사용하여 HTTP/HTTPS 요청을 보내고 반환된 요청 콘텐츠를 처리하는 방법을 소개합니다.
먼저 Node.js에서 HTTP 요청을 보내는 데 널리 사용되는 방법인 request
패키지를 설치해야 합니다. 다음 명령을 통해 설치할 수 있습니다. request
包,它是Node.js中发送HTTP请求的一种流行的方式。可以通过以下命令进行安装:
npm install request
安装完成后,就可以使用request
包来发送HTTP/HTTPS请求了。
使用request
发送请求很简单,只需要传入一个URL参数即可,例如:
const request = require('request'); request('https://www.baidu.com', function (error, response, body) { console.log('error:', error); // 打印错误信息 console.log('statusCode:', response && response.statusCode); // 打印响应状态码 console.log('body:', body); // 打印HTML内容 });
上述代码发送一个GET请求到百度网站,并打印响应的状态码和HTML内容。
如果需要发送POST请求,则需要传入一个包含请求参数的实体:
const request = require('request'); request.post('https://api.example.com/login', {form: {username: 'example', password: 'password'}}, function (error, response, body) { console.log('error:', error); // 打印错误信息 console.log('statusCode:', response && response.statusCode); // 打印响应状态码 console.log('body:', body); // 打印响应内容 } );
上述代码发送一个POST请求到https://api.example.com/login
,并带上用户名和密码参数。form
是一个参数实体,包含了请求的参数。
当请求执行完毕后,request
回调后将会返回一个响应对象,其中包含了响应的状态码和实体内容。可以使用response.statusCode
访问响应状态码,使用response.body
访问实体内容。
除了直接打印内容,还可以对返回的内容进行解析和处理。常见的处理方式有字符串解析、JSON解析、二进制解析等。
例如,当回调返回HTML内容时,可以使用cheerio
或者node-html-parser
来进行解析:
const request = require('request'); const cheerio = require('cheerio'); request('https://www.example.com', function (error, response, body) { if (!error && response.statusCode == 200) { const $ = cheerio.load(body); console.log($('title').text()); } });
上述代码使用cheerio解析HTML内容,打印了网页的标题。
当回调返回JSON格式的内容时,可以使用JSON.parse
方法来解析JSON字符串。例如:
const request = require('request'); request('https://api.example.com/users/1', function (error, response, body) { if (!error && response.statusCode == 200) { const user = JSON.parse(body); console.log(user.name); console.log(user.email); } });
上述代码解析了返回的JSON内容,并打印了用户的名称和邮箱。
当回调返回二进制内容时,可以使用Buffer
对象来进行解码。例如:
const request = require('request'); request('https://www.example.com/logo.png', {encoding: null}, function (error, response, body) { if (!error && response.statusCode == 200) { const data = 'data:' + response.headers['content-type'] + ';base64,' + Buffer.from(body).toString('base64'); console.log(data); } });
上述代码获取了一个PNG图片,并使用Buffer
对象将返回的二进制数据进行解码。
如果需要发送HTTPS请求,则需要使用https
包。https
包是Node.js自带的包,无需进行安装。可以像下面代码这样发送HTTPS请求:
const https = require('https'); https.get('https://www.example.com', function (response) { console.log('statusCode:', response.statusCode); console.log('headers:', response.headers); response.on('data', function (data) { console.log(data.toString()); }); });
上述代码使用https.get
方法发送了一个HTTPS GET请求,并打印了响应状态码和响应头。使用response.on
方法可以监听返回内容的流并进行处理。
HTTPS请求需要进行安全认证,因此需要使用HTTPS证书。可以在参数中添加ca、cert、key等属性来指定证书。
例如:
const fs = require('fs'); const https = require('https'); const options = { ca: [fs.readFileSync('ca.pem')], cert: fs.readFileSync('cert.pem'), key: fs.readFileSync('key.pem') }; https.get('https://www.example.com', options, function (response) { console.log('statusCode:', response.statusCode); console.log('headers:', response.headers); response.on('data', function (data) { console.log(data.toString()); }); });
上述代码使用了自己的证书,其中ca
是根证书的证书链,cert
和key
rrreee
request
패키지를 사용하여 HTTP/HTTPS 요청을 보낼 수 있습니다. 요청 보내기
request
를 사용하여 요청을 보내는 것은 매우 간단합니다. 예를 들어 URL 매개변수만 전달하면 됩니다. 🎜rrreee🎜위 코드는 Baidu에 GET 요청을 보냅니다. 웹사이트를 방문하고 응답 코드와 HTML 콘텐츠의 상태를 인쇄합니다. 🎜🎜POST 요청을 보내야 하는 경우 요청 매개변수가 포함된 엔터티를 전달해야 합니다. 🎜rrreee🎜위 코드는 POST 요청을 https://api.example.com/login으로 보냅니다. code>를 사용자 이름 및 비밀번호 매개변수에 사용합니다. <code>form
은 요청된 매개변수가 포함된 매개변수 엔터티입니다. 🎜🎜응답 처리🎜🎜요청이 완료되면 응답의 상태 코드와 엔터티 콘텐츠가 포함된 요청
콜백 후에 응답 개체가 반환됩니다. response.statusCode
를 사용하여 응답 상태 코드에 액세스하고 response.body
를 사용하여 엔터티 콘텐츠에 액세스할 수 있습니다. 🎜🎜콘텐츠를 직접 인쇄하는 것 외에도 반환된 콘텐츠를 구문 분석하고 처리할 수도 있습니다. 일반적인 처리 방법에는 문자열 구문 분석, JSON 구문 분석, 바이너리 구문 분석 등이 포함됩니다. 🎜🎜예를 들어 콜백이 HTML 콘텐츠를 반환하면 cheerio
또는 node-html-parser
를 사용하여 다음을 구문 분석할 수 있습니다. HTML 콘텐츠를 만들고 웹페이지 제목을 인쇄합니다. 🎜🎜콜백이 JSON 형식으로 콘텐츠를 반환하는 경우 JSON.parse
메서드를 사용하여 JSON 문자열을 구문 분석할 수 있습니다. 예: 🎜rrreee🎜위 코드는 반환된 JSON 콘텐츠를 구문 분석하고 사용자 이름과 이메일을 인쇄합니다. 🎜🎜콜백이 바이너리 콘텐츠를 반환하면 디코딩을 위해 Buffer
개체를 사용할 수 있습니다. 예: 🎜rrreee🎜위 코드는 PNG 이미지를 얻고 Buffer
개체를 사용하여 반환된 이진 데이터를 디코딩합니다. 🎜🎜HTTPS 요청 보내기🎜🎜HTTPS 요청을 보내야 하는 경우 https
패키지를 사용해야 합니다. https
패키지는 Node.js와 함께 제공되는 패키지이므로 설치할 필요가 없습니다. 다음 코드와 같이 HTTPS 요청을 보낼 수 있습니다. 🎜rrreee🎜위 코드는 https.get
메서드를 사용하여 HTTPS GET 요청을 보내고 응답 상태 코드와 응답 헤더를 인쇄합니다. 반환된 콘텐츠의 스트림을 수신하고 처리하려면 response.on
메서드를 사용하세요. 🎜🎜HTTPS 요청에는 보안 인증이 필요하므로 HTTPS 인증서가 필요합니다. 매개변수에 ca, cert, key 및 기타 속성을 추가하여 인증서를 지정할 수 있습니다. 🎜🎜예: 🎜rrreee🎜위 코드는 자체 인증서를 사용합니다. 여기서 ca
는 루트 인증서의 인증서 체인이고 cert
및 key code> 그 자체가 인증서이자 개인 키입니다. 🎜🎜요약🎜🎜이 글에서는 Node.js에서 HTTP/HTTPS 요청을 보내는 방법과 반환된 콘텐츠를 처리하는 방법을 소개합니다. 마지막으로, HTTP 요청 전송에는 도메인 간 문제가 포함될 수 있으며 도메인 간 요청 헤더를 설정해야 한다는 점에 유의해야 합니다. 동시에 너무 많은 요청을 하거나 민감한 정보가 유출되지 않도록 보안 문제와 성능 문제에도 주의를 기울여야 합니다. 🎜
위 내용은 nodejs 요청 주소의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!