【发布时间】:2018-07-05 10:47:28
【问题描述】:
我创建了一个应用程序,用户将使用 C 或 Python 发送程序并通过 STDIN 输入,我的 API 将以 JSON 格式返回程序的输出。
Nodejs/Expressjs 代码:
route.post('/exec', (req, res, next) => {
if(req.body.lang === 'c')
cExec(req, res)
if(req.body.lang === 'py3')
py3Exec(req, res)
})
在py3Exec() and cExec() 中执行代码后,我使用退出代码编写了此代码以发送回输出:
if(code === 0)
{
if(stdout === req.body.output)
res.send({
"result": "AC",
"output": stdout
})
else
res.send({
"result": "WA",
"output": stdout
})
}
else
{
res.send({
"result": "ERR",
"error": stderr
})
}
https://github.com/vkartik97/Online-IDE-API/blob/master/routes/run.js#L41
所以,这个 API 是 REST。我想知道这是否是此用例的完美方式,或者是否应该使用 RPC,因为 REST 仅用于来自服务器的资源,而 RPC 用于函数调用(可能是我的情况)。
谢谢!
【问题讨论】:
-
没有直接关系,但我希望你意识到你的方案允许任何人在你的机器上运行任意代码,例如阅读和/或删除所有内容。
-
谢谢。我计划在这种情况下使用 Docker。
标签: node.js rest api express rpc