【发布时间】:2020-05-18 05:48:45
【问题描述】:
我想在管道工 API 中获取 CSV 的输入并将其输出为 CSV。
我可以单独做这两件事(借助下面的链接)。
但我不能一起做。
使用来自 Github 链接的序列化器:
serializer_csv <- function(){
function(val, req, res, errorHandler){
tryCatch({
res$setHeader("Content-Type", "text/plain")
res$setHeader("Content-Disposition", 'attachment; filename="xxx.csv"')
res$body <- paste0(val, collapse="\n")
return(res$toResponse())
}, error=function(e){
errorHandler(req, res, e)
})
}
}
plumber::addSerializer("csv", serializer_csv)
plumber::plumber$new("plumber-csv.R")$run(port = 8833)
管道工文件:
#* @serializer csv
#* @get /csv
function() {
df <- data.frame(CHAR = letters, NUM = rnorm(length(letters)), stringsAsFactors = F)
csv_file <- tempfile(fileext = ".csv")
on.exit(unlink(csv_file), add = TRUE)
write.csv(df, file = csv_file)
readLines(csv_file)
}
这里,我没有使用readLines,而是直接尝试return(csv_file)。它下载一个临时文件。但是在我的本地磁盘上,该文件没有显示出来。
那么输入和输出 CSV 文件的方式可能是什么? 链接:
【问题讨论】:
-
为了清楚起见,您希望将文件作为 csv 发送给管道工,而不是希望输出也是 csv 文件?
-
是的。这是正确的。但是我会在 CSV 上做一些操作。