使用node的服务器请求初解

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 前几天写了一个翻译小工具,使用了node.js的http服务器请求,在这里记录一下使用的步骤和注意事项

本章知识点

1.百度翻译平台接口

2.md5加密转换

3.http.request请求

4.typescript转JavaScript并发送的npm


百度翻译平台


首先在 百度翻译平台注册,申请一个通用翻译的api,标准版的就够用

然后根据文档与支持里的通用翻译文档进行查看和操作


微信图片_20230107124352.png

在操作过程中,app ID和密钥都需要保密,如果泄漏有可能别人也会调用,调用的多的话就会扣钱

拼接完整请求:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&
salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
请求参数:
     q=apple
     from=en
     to=zh
     appid=2015063000000001(请替换为您的appid)
     salt=1435660288(随机码)
     平台分配的密钥: 12345678
生成签名sign:
Step1. 拼接字符串1:
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678得到字符串1:“2015063000000001apple143566028812345678”
Step2. 计算签名:(对字符串1做md5加密)
sign=md5(2015063000000001apple143566028812345678),得到sign=f89f9594663708c1605f3d736d01d2d4

代码会上传的github或其他开源网站,所以这个时候就要使用md5进行加密了


md5加密


MD5在线加密转化网站

百度翻译的请求链接中的请求参数需要用到md5加密转化使用的是32位小写


项目中使用md5


在项目中如果要使用md5需要下载md5库

yarn add md5

因为我使用的是typescript;所以MD5也要搭配typescript使用

yarn add --dev @types/md5

在项目中引入md5

然后直接使用,转化为md5加密

const sign = md5(要加密的内容) ;


http.request请求的使用方式


node.js中http.request的使用文档

url地址的请求参数是 ?后面的http://api.fanyi.baidu.com/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4它并不是固定不变的,当请求的内容不一样时,里面的参数会变化;

所以需要把它拼装在一起 这个时候可以使用querystring.stringify(),它是将参数变成由  & 相连的字符串  q=hi&sign=1234

querystring.stringify({q: 'hi', sign: '1234'})
// q=hi&sign=1234

https.request需要有两个参数,一个是options参数,另一个是回调函数;

options会自动拼接成url,回调函数是请求后对返回数据的操作

response.on是对数据的监控; req.end() 来表示请求的结束

const options = {
        hostname: 'api.fanyi.baidu.com',
        port: 443,
        path: '/api/trans/vip/translate?'+query,
        method: 'GET'
    };
    const req = https.request(options, (response) => {
        response.on('data', (d) => {
        });
    });
    req.on('error', (e) => {
        console.error(e);
    });
    req.end();

请求返回来的数据都是Buffer类型的,有时候一次性传不完,还会接着几次传递,所以要拼接数据

完整的代码:

const request = https.request(options, (response) => {
        // console.log('状态码:', response.statusCode);
        // console.log('请求头:', response.headers);
        //监听请求到的结果,并把它变成字符串
        let chunks:Buffer[] = [];
        response.on('data', (chunk:Buffer) => {
            chunks.push(chunk)
        });
        response.on('end',()=>{
            const string = Buffer.concat(chunks).toString();
            //定义一个返回结果的类型
            type BaiduResult={
                error_code?:string;
                error_msg?:string;
                from:string;
                to:string;
                trans_result:{src:string,dst:string}[];
            }
            const object:BaiduResult = JSON.parse(string);
            if(object.error_code){
                console.log(errorMap[object.error_code] || object.error_msg);
                //退出当前任务
                process.exit(2)
            }else {
                console.log(object.trans_result[0].dst)
                //退出当前进程,0表示没有错误
                process.exit(0)
            }
        })
    });
    request.on('error', (e) => {
        console.error(e);
    });
    request.end();
复制代码


上传到npm


上传之前需要将typescript转化为JavaScript,并且生成dist目录,只上传dist目录的文件


初始化


会生成一个配置文件tsconfig.json

tsc --init

将outDir修改"outFile": "dist/",

在cli.ts里第一行添加,告诉程序使用node执行

#!/usr/bin/env node

执行tsc,会生成dist目录,所有的ts文件都会转化为js文件

tsc


修改package.json


{
  "name": "uath-translate",
  "version": "0.0.1",
 "main": "dist/main.js",
  //使用fy代替 "dist/cli.js"使用时只需要执行   fy 单词
  "bin": {
    "fy": "dist/cli.js"
  },
  //只上传dist目录下的js文件
  "files": [
    "dist/**/*.js"
  ],
  "scripts": {
    "start": "ts-node-dev src/main.ts"
  },


开始上传


发送之前要把淘宝源修改为npm的官方源

使用  nrm ls 查看源

如果此时你使用的是淘宝源,切换到npm的官方源

nrm use npm

登录你的npm账户

npm adduser

上传

npm public


下载安装测试


在另一个命令行窗口下载,测试

我的npm包名字是uath-translate

npm i -g uath-translate

微信图片_20230107125259.png


/



目录
相关文章
|
1月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
57 22
|
18天前
|
缓存 负载均衡 监控
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
33 2
|
1月前
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
36 2
Node.js GET/POST请求
|
1月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
60 4
|
1月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
1月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
53 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
1月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
17 0
|
JSON 网络协议 JavaScript
|
2月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
1月前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
30 2
下一篇
无影云桌面