Node.js 实现简单的接口服务器

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 通过node.js来实现接口服务器的功能。主要特点为:1) 增加接口不需要重启2) 异步执行,但接口阅读的时候是同步的代码(从上而下),或者可以按需求并行,串行这里只是抛出基本思路,所以使用GET,也没有加密之类的首先启动监听端口,配置好访问规则。

通过node.js来实现接口服务器的功能。主要特点为:

1) 增加接口不需要重启

2) 异步执行,但接口阅读的时候是同步的代码(从上而下),或者可以按需求并行,串行


这里只是抛出基本思路,所以使用GET,也没有加密之类的

首先启动监听端口,配置好访问规则。(通过识别特定URL ,动态执行相应的接口脚本)

-----

   |----HamstrerServlet

| ------ command3G

    | ------ login.js   //登录脚本(这里只是简单演示)

  | --- server.js  (主启动脚本)

  | --- dbutil (数据库操作)


server.js

var $ = require('jquery');
var _ = require('underscore');
var vm = require('vm');
var fs = require('fs');
var journey = require('journey');
var async = require('async');
var dbutil = require('./dbutil');

String.prototype.replaceAll = function(s1, s2) {
	var demo = this
	while (demo.indexOf(s1) != - 1)
	demo = demo.replace(s1, s2);
	return demo;
}
// Create a Router
var router = new(journey.Router);

// Create the routing table
router.map(function() {
	// this.root.bind(function (req, res) { res.send("Welcome") });
	this.get(/HamstrerServlet\/(\w*\W*\w*)*/).bind(function(req, res, id) {
		var runJsPath = this.request.url.pathname.replaceAll("/HamstrerServlet", "") + ".js";
		console.log("执行的脚本文件:" + runJsPath);

		//传入的绑定变量
		var sandbox = {
			req: req,
			res: res,
			$: $,
			dbutil: dbutil,
			async: async,
			console: console
		};

		fs.readFile('./HamstrerServlet' + runJsPath, function(err, data) {
			vm.runInNewContext(data, sandbox, 'myfile.vm');
		});

	});
	this.post('/^HamstrerServlet\/(\w*)$/)').bind(function(req, res, data) {
		res.send(200);
	});
});

require('http').createServer(function(request, response) {
	var body = "";

	request.addListener('data', function(chunk) {
		body += chunk
	});
	request.addListener('end', function() {
		router.handle(request, body, function(result) {
			response.writeHead(result.status, result.headers);
			response.end(result.body);
		});
	});
}).listen(8080);

dbutil.js

var mysql = require('mysql'); //导入mysql Module

var pool = mysql.createPool({
	host: '192.168.140.237',
	user: 'root',
	password: '123456',
	database: 'command3G'
});

//查询sql语句
function query(strSQL, param, callback) {
	pool.getConnection(function(err, connection) {
		connection.query(strSQL, param, function(err, rows, fields) {
			if (err) throw err;
			callback(rows, fields);
			connection.end();
			// connection.destroy();
		});
	});
}

exports.query = query;

login.js

console.log("beigin");

//并行处理,相当于2个map最后再做一个ReReduce
async.parallel([
    function(callback){
        // 从数据库中获取当前时间
		dbutil.query("SELECT CURTIME()  AS DATE",null,function(rows,fields){
			callback(null, rows[0].DATE);
		});
    },
    function(callback){
        //随便返回一个值
        callback(null, '中文测试');
    }
],
function(err, results){
	console.log(results);
	var retVal ={
		"currentTime": results[0],
		"desc": results[1]
	};
	res.sendBody(JSON.stringify(retVal));
});

node server.js 启动后通过访问 http://localhost:8080/HamstrerServlet/command3G/login

就会输出:



这个时候修改login.js都会及时生效,不需要重新启动服务器



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
数据采集 JavaScript 搜索推荐
服务器端渲染(SSR)(Nuxt+Next.js)
服务器端渲染(SSR)技术在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js和Next.js分别是基于Vue.js和React.js的流行SSR框架。Nuxt.js提供自动化路由管理、页面级数据获取和布局系统,支持SSR和静态站点生成。Next.js支持SSR、静态生成和文件系统路由,通过`getServerSideProps`和`getStaticProps`实现数据获取。SSR的优点包括首屏加载快、SEO友好和适合复杂页面,但也会增加服务器压力、开发限制和调试难度。选择框架时,可根据项目需求和技术栈决定使用Nuxt.js或Next.js。
|
27天前
|
缓存 负载均衡 监控
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
42 2
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
JSON 前端开发 API
使用微信JS-SDK调用发票接口的完整开发指南
本文介绍了如何使用微信JS-SDK的`chooseInvoiceTitle`接口来调用微信的发票功能。通过微信发票接口,用户可以选择开具个人或单位发票,并获取相关发票信息,如抬头、税号、公司地址等。在文中,详细描述了JS-SDK的初始化、发票接口的调用方式,并提供了完整的代码示例。文章还介绍了如何处理返回的发票信息,帮助开发者快速集成微信发票功能。
85 2
|
2月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
22 0
|
14天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
19天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
21天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
19天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
104 2