> 웹 프론트엔드 > 프런트엔드 Q&A > nodejs 요청 주소

nodejs 요청 주소

WBOY
풀어 주다: 2023-05-13 21:29:11
원래의
507명이 탐색했습니다.

웹 개발 과정에서 백엔드에 요청을 보내거나, 데이터를 얻거나, 일부 작업을 수행해야 하는 경우가 종종 있습니다. 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包。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是根证书的证书链,certkeyrrreee

설치가 완료된 후 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는 루트 인증서의 인증서 체인이고 certkey code> 그 자체가 인증서이자 개인 키입니다. 🎜🎜요약🎜🎜이 글에서는 Node.js에서 HTTP/HTTPS 요청을 보내는 방법과 반환된 콘텐츠를 처리하는 방법을 소개합니다. 마지막으로, HTTP 요청 전송에는 도메인 간 문제가 포함될 수 있으며 도메인 간 요청 헤더를 설정해야 한다는 점에 유의해야 합니다. 동시에 너무 많은 요청을 하거나 민감한 정보가 유출되지 않도록 보안 문제와 성능 문제에도 주의를 기울여야 합니다. 🎜

위 내용은 nodejs 요청 주소의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿