编写NodeJs脚本实现接口请求

2023-03-03 11:13:27 浏览数 (1)

要编写运行脚本,需要先搭建开发环境

环境搭建

nodeJs脚本运行,当然需要先安装nodejs环境

官方地址在这里: nodejs官网

打开官网地址,可以看到下面一句话:

Node.js® is an open-source, cross-platform JavaScript runtime environment.

在打开的页面,可以直接下载最新的nodejs版本;

在这里插入图片描述在这里插入图片描述

也可以在下载页面, 来下载其他版本;

下载后直接安装即可;安装完之后就可以使用npm命令了;

多版本控制

nodejs的版本很多,实际开发中,会发现不同的项目使用的nodejs的版本不一样,所以可能需要安装多个版本;

找到了一个node多版本控制的软件nvm; 下载地址

  • 下载一下 nvm-setup.zip 之后解压出来一个 nvm-setup.exe 文件,双击安装;
  • 安装完成后,打开 cmd 执行命令nvm -v 测试是否成功;
  • 查看可安装版本 ,执行命令:nvm list available
  • 安装指定版本:nvm install 版本号; nvm install 16.14.0 =>安装nodejs 16.14.0
设置代理和镜像

如果nvm安装nodejs太慢.可以设置国内的代理地址,可以加快速度:

打开nvm安装目录,找到settings.txt文件,在最后添加一下参数

node_mirror:https://npm.taobao.org/mirrors/node/

npm_mirror:https://npm.taobao.org/mirrors/npm/

npm下载依赖包,默认的地址是国外的地址,有可能也会慢,可以设置一下镜像;

打开CMD,输入如下命令即可:

npm config get registry

npm config set registry https://registry.npm.taobao.org/

编写脚本

工具推荐使用vscode,比较方便;

  • 实现一个打开指定网页的脚本
代码语言:javascript复制
var open = require('open'); //opn child_process都可以
open('https://***.cn/', 'chrome');

以上两行代码,就可以实现;

不过,第一行代码中的require中的open是需要安装的;

在vscode中打开新终端,输入命令:

npm install open

也可以打开CMD,输入以上命令,都可以安装依赖;

运行脚本

在vscode中的新终端,输入命令:

node 脚本名称

或者打开CMD,进入脚本所在目录,输入以上命令;

就可以运行以上脚本;

编写NodeJs脚本实现接口请求
  • 写一个脚本请求指定url获取html并解析:

主要用到的库是https和cheerio;

http是发起请求使用,是内置插件;

cheerio是一个第三方插件,该插件可以将网页中的数据拿出来,像jquery一样操作dom,

安装命令: npm install cheerio

代码语言:javascript复制
const https = require('http'); //请求发起
 
//解析html 一个服务端操作DOM的库,简直就是服务端的jquery。
const cheerio = require('cheerio');

const gethtml = function(){
    let url = 'https://www.baidu.com/';
    https.get(url,function(res){
      // 分段返回的 自己拼接
      let html = '';
      // 有数据产生的时候 拼接
      res.on('data',function(chunk){
          html  = chunk;
      })
      // 拼接完成
      res.on('end',function(){
          //解析html
         //console.log(html)
         const $ = cheerio.load(html);
         console.log($('.s-top-left').text())
      })
    })
  }
  
  gethtml()
  • 写一个脚本请求指定接口,获取json数据;
代码语言:javascript复制
const http = require('http');//由于http.get是Node的http模块   所以第一件事情当然是引入http模块啦~

http.get('http://httpbin.org/get', (res) => {//res是请求后端给你的数据

  const { statusCode } = res;//获取请求的状态码

  const contentType = res.headers['content-type'];//获取请求类型

  let error;
  if (statusCode !== 200) {//如果请求不成功
    error = new Error('请求失败n'  
      `状态码: ${statusCode}`); //报错抛出状态码
  } else if (!/^application/json/.test(contentType)) {//验证请求数据类型是否为json数据类型   json的content-type :'content-type':'application/json'
    error = new Error('无效的 content-type.n'  //再次报错
      `期望的是 application/json 但接收到的是 ${contentType}`);
  }
    //请求成功
  res.setEncoding('utf8');//字符编码
  let rawData = '';
  res.on('data', (chunk) => { rawData  = chunk; });//通过data事件拼接数据流得到数据
  res.on('end', () => {//end表示获取数据结束了
    try {  //捕获错误信息
      console.log(rawData);
    } catch (e) {
      console.error(e.message);
    }
  });
}).on('error', (e) => {
  console.error(`出现错误: ${e.message}`);
});

0 人点赞