使用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


/



目录
相关文章
|
2天前
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
50 30
|
1月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
106 17
|
5月前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
4月前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
98 8
|
5月前
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
309 1
|
5月前
|
缓存 负载均衡 监控
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
203 2
|
2月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
1月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
687 24
|
2月前
|
JavaScript 前端开发 数据可视化
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡
74 2
【01】Cocos游戏开发引擎从0开发一款游戏-cocos环境搭建以及配置-Cocos Creator软件系统下载安装-node环境-优雅草卓伊凡

热门文章

最新文章

下一篇
oss创建bucket