网站动态接口获取服务器代码,Node.js 实现简单的接口服务器的实例代码

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

1) 增加接口不需要重启

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

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

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

登录脚本(这里只是简单演示)

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

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

server.js

score');

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,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

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,rows,fields) {

if (err) throw err;

callback(rows,fields);

connection.end();

// connection.destroy();

});

});

}

exports.query = query;

login.js

//并行处理,相当于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,'中文测试');

}

],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

就会输出:

2017523100542765.jpg?20174231062

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值