我正在使用 Node Restify Module 创建一个接受 POST 的 REST 服务。在服务中,我尝试使用节点沙盒模块创建沙盒进程,因为我们将运行动态插入的 Javascript,如果出现问题,我不希望它影响主节点实例。
当我尝试创建沙盒时,出现问题并导致 REST 服务返回为空。
这是我的代码
var restify = require('restify');
var Sandbox = require("sandbox");
var logic;
function createSandbox(body) {
var s = new Sandbox();
s.run("1 + 1", function(output) {
logic = body.names + " has " + output.result;
});
}
function respond(req, res, next) {
createSandbox(req.body);
res.send(logic);
}
var server = restify.createServer();
server.use(restify.bodyParser({
mapParams: false
}));
server.post('/hello/:name', respond);
server.head('/hello/:name', respond);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
在我的 http 请求中,我{"names":"rob"}
在正文中
我期待以下回应
rob has 2
------------更新--------这行得通
var restify = require('restify');
var Sandbox = require("sandbox");
var logic;
function respond(req, res, next) {
var s = new Sandbox();
s.run("1 + 1", function(output) {
logic = req.body.names + " has " + output.result;
res.send(logic);
});
}
var server = restify.createServer();
server.use(restify.bodyParser({
mapParams: false
}));
server.post('/run/:id', respond);
server.head('/run/:id', respond);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});