如何在 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
选项,RestRserve
、OpenCPU
等等。
根据您的用例,您 select 什么最适合您。如果您需要任何管道工帮助,请随时询问。我认为它不会很快消失,因为它已被纳入 RStudio IDE,我认为它的装饰结构 a la roxygen2
使其易于采用。
我正在努力寻找 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
选项,RestRserve
、OpenCPU
等等。
根据您的用例,您 select 什么最适合您。如果您需要任何管道工帮助,请随时询问。我认为它不会很快消失,因为它已被纳入 RStudio IDE,我认为它的装饰结构 a la roxygen2
使其易于采用。