r-是否可以控制openCPU中的HTTP响应行为



根据openCPU文档,在一些情况下,有一些默认的HTTP状态代码和返回类型。例如,当R引发错误时,openCPU返回响应类型为text/plain的代码400

虽然我认为应该可以控制这些东西,但有可能直接从R定制这些东西吗?例如,如果我想为R函数中的特定错误返回一个JSON,状态代码为503,该怎么办?

您可以通过分叉opencpu或通过本地副本来更改他们的R包行为,即不确定包是否允许这样的功能,但响应是在res.R 中配置的

例如,上述链接中的此方法将400用于错误。

error <- function(msg, status=400){
setbody(msg);
finish(status);
}

如果我能在不更改包代码的情况下确认这是可用的,我会更新答案。

更新时间:2021年4月17日

你可以编写你的服务html,即index.html,它使用opencpu.js从你的应用程序中调用相应的R函数,在opencpu.js调用中可以请求返回类型为json。在R函数中,您可以tryCatch()错误以json参数的形式发送适当的错误代码。

例如,在股票示例应用程序中,您可以看到文件stock.js,它调用R文件夹中的函数,即

//this function gets a list of stocks to populate the tree panel
function loadtree(){
var req = ocpu.rpc("listbyindustry", {}, function(data){
Ext.getCmp("tree-panel").getStore().setProxy({
type : "memory",
data : data,
reader : {
type: "json"
}
});
Ext.getCmp("tree-panel").getStore().load();
}).fail(function(){
alert("Failed to load stocks: " + req.responseText);
});
}

被调用的相应R代码在按行业列出的列表中。R、 您可以在其中tryCatch()并发送自定义json

最新更新