node服务器接口不稳定,Node.js 实现简单的接口服务器

通过node.js来实现接口服务器的功能。主要特点为: 1) 增加接口不需要重启 2) 异步执行,但接口阅读的时候是同步的代码(从上而下),或者可以按需求并行,串行 这里只是抛出基本思路,所以使用GET,也没有加密之类的 首先启动监听端口,配置好访问规则。(

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

1) 增加接口不需要重启

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

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

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

-----

|----HamstrerServlet

| ------ command3G

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

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

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

server.jsvar $ = 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.jsvar 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.jsconsole.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

就会输出:

test.jsp?url=http%3A%2F%2Fimg.blog.csdn.net%2F20130808113839203%3Fwatermark%2F2%2Ftext%2FaHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdqaWFueWluZw%3D%3D%2Ffont%2F5a6L5L2T%2Ffontsize%2F400%2Ffill%2FI0JBQkFCMA%3D%3D%2Fdissolve%2F70%2Fgravity%2FCenter&refer=http%3A%2F%2Fblog.csdn.net%2Fzhangjianying%2Farticle%2Fdetails%2F9833581

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在区分服务器Node.js和测试环境Node.js时,可以通过以下几种方式进行区分: 1. 环境变量:在服务器和测试环境中,可以设置不同的环境变量来区分它们。可以在服务器设置一个名为"NODE_ENV"的环境变量,值为"production",而在测试环境中设置为"development"或其他自定义值。然后在Node.js应用程序中,可以通过访问process.env.NODE_ENV来获取当前环境变量的值,从而区分服务器和测试环境。 2. 配置文件:可以为服务器和测试环境分别创建不同的配置文件。在服务器上使用一个名为"config.production.js"的配置文件,而在测试环境中使用一个名为"config.development.js"的配置文件。然后在Node.js应用程序中,根据当前环境加载相应的配置文件,从而区分服务器和测试环境。 3. 日志输出:在Node.js应用程序中,可以在服务器和测试环境中分别输出不同的日志信息。可以在服务器上输出生产环境相关的日志信息,而在测试环境中输出开发环境相关的日志信息。通过查看日志输出,可以区分服务器和测试环境。 4. 数据库连接:在Node.js应用程序中,可以使用不同的数据库连接来区分服务器和测试环境。可以在服务器上使用一个生产环境的数据库连接,而在测试环境中使用一个开发环境的数据库连接。通过查看数据库连接信息,可以区分服务器和测试环境。 5. 端口监听:在Node.js应用程序中,可以在服务器和测试环境中分别监听不同的端口。可以在服务器上监听80或443端口,而在测试环境中监听其他非常用端口。通过查看应用程序监听的端口,可以区分服务器和测试环境。 这些是区分服务器Node.js和测试环境Node.js的几种常见方式。根据具体的需求和场景,可以选择适合的方式来区分它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值