如何在 httr 中执行 plumber::plumb(file = 'mypath')?

How to do the plumber::plumb(file = 'mypath') in httr?

我正在努力寻找 httr 可以做与 R 中的管道工相同的事情的解决方案。在管道工中,这是有效的代码:

1).创建脚本 hello_world_plumber.R

#' @post /hello_world
hi <- function(name) {
  return(paste0('Hello ', name, '!'))
}

2).在另一个脚本中:

pr <-  plumb(file = '~/hello_world_plumber.R')
pr$run(swagger = F)

Starting server to listen on port 5852
Running the swagger UI at http://127.0.0.1:5852/__swagger__/

3).在终端

curl -s --data 'Matt' http://127.0.0.1:5852/hello_world
Out: Hello Matt!

plumber 建立在 httpuv 库之上,可帮助您通过一些修饰快速定义 API。

httr 软件包是通过 curl 命令发送 http 查询。

所以 httr 就像客户端,而 plumber 是您的服务器。这就是为什么有更多的下载。 Chrome/Firefox 下载量比 Nginx/Apache 多得多,这只是工具的性质。

如果您不关心装饰、异步、查询字符串和正文解析、openapi 和其他好东西,那么您可以在没有管道工的情况下使用 httpuv 实现同样的事情。虽然它很简单。

runServer("127.0.0.1", 8477,
  list(
    call = function(req) {
      list(
        status = 200L,
        headers = list(
          'Content-Type' = 'text/html'
        ),
        body = "Hello world!"
      )
    }
  )
)

还有多个 plumber 选项,RestRserveOpenCPU 等等。

根据您的用例,您 select 什么最适合您。如果您需要任何管道工帮助,请随时询问。我认为它不会很快消失,因为它已被纳入 RStudio IDE,我认为它的装饰结构 a la roxygen2 使其易于采用。