r - 如何从 OpenCPU R 函数内部设置自定义 HTTP 状态代码
问题描述
我在 OpenCPU 上有一个 R 函数(由 OpenCPU docker 映像提供:https ://hub.docker.com/r/opencpu/rstudio/ ),它按某些标准过滤数据。如果没有要返回的数据,我想发送一条带有 204 状态码的消息(无数据)。如何从 R 函数内部设置状态状态代码?
rApache 文档 ( http://rapache.net/manual.html ) 中有相关信息。据说rApache中有一个函数setStatus(),但是调用这个函数时我无法设置状态码。我试图设置 204 状态码,但我得到了一个默认(用于 POST)201 状态码。
filterData <- function(filter_a = NULL, filter_b = NULL) {
data <- as.data.frame(
list("a" = c(1,2,3), "b" = c(3,2,1))
)
if (!is.null(filter_a)) {
data <- subset(data, a == filter_a)
}
if (!is.null(filter_b)) {
data <- subset(data, b == filter_b)
}
if (nrow(data) == 0) {
setStatus(204L)
return("No content")
} else {
return(data)
}
}
解决方案
简短的回答:这是不可能的。
设置响应状态码的逻辑封装在 openCPU 中。状态代码在res对象中进行管理。在 POST 请求的情况下,即使您设法在内部对象中设置状态码, openCPU 也会覆盖session_eval中的状态码。在执行您的自定义代码后,OpenCPU 会用 201 代码覆盖它。
推荐阅读
- ruby-on-rails - 导入 React 库 Ruby On Rails
- amazon-web-services - 使用 aws sts 假设角色配置 AWS EMR spark
- jquery - 引导多选列表不会为 Rails 打开
- sql-server - 从sql存储过程下载原始pdf文件时如何处理pdf?
- vb.net - 禁用密码套件后,httpclient 在 Windows 7 中不起作用
- ansible - 使用多个主机进行部署时,如何循环访问不同的变量?
- sql - 在 Excel PowerQuery 中执行存储过程
- regex - 解析 Syslog 中的正则表达式帮助
- c# - 我应该什么时候在 Web 服务 (ASMX) 中实例化我的类?
- flutter - 界面交互问题,父子widget交互