OpenCPU(MAC版)
OpenCPU:让 R 变成 Web API(macOS 本地部署教程)
R 擅长数据分析,但不适合写 Web 服务?那是你还没用上 OpenCPU。
OpenCPU 是一个让 R 函数变成 HTTP 接口的框架,支持 JSON 输入输出、绘图、报表、生成功能强大。
🍎 环境准备(macOS)
确认你已经安装以下内容:
- R(推荐最新版)
- Xcode command line tools(终端执行:
xcode-select --install
) - Homebrew(可选但推荐)
🛠 安装 OpenCPU
查看官网Local Single-User Server部分
# 1. 安装 R 和系统依赖
brew install r
brew install libgit2
brew install protobuf
# 2.安装 OpenCPU Server 包
R #进入R语言控制台
install.packages("opencpu")
🧪 创建 R 包项目
1. 创建项目结构
mkdir helloworld
cd helloworld
mkdir R
touch DESCRIPTION
touch R/hello.R
2. 填写 DESCRIPTION 文件
Package: helloworld
Type: Package
Title: Hello World API
Version: 0.1
Author: 你自己
Maintainer: 你 <you@example.com>
Description: A simple Hello World API using OpenCPU.
License: MIT
Encoding: UTF-8
3. 编写函数代码(R/hello.R
)
#' Say Hello
#'
#' @param name 名字
#' @return 一个 Hello 字符串
#' @export
#' @name hello
hello <- function(name = "World") {
paste("Hello,", name, "!")
}
🚀 安装并测试 API
安装 devtools 并安装本地包
install.packages("devtools") # 第一次使用需安装
library(devtools)
setwd("/绝对路径/helloworld")
# 安装成本地 R 包
devtools::document() # 生成文档
devtools::install() # 安装这个包
测试本地安装的hello函数
# 验证包是否可以正常加载
library(helloworld)
#直接使用helloworld包里面的函数
hello()
#查看帮助文档
?hello
#使用 testthat 编写测试(可选)
devtools::test()
运行 OpenCPU 服务
# install完成后,运行 OpenCPU 服务(这里是包名,不是路径),开发时可以使用这种方式启动,线上部署时需要使用apache
opencpu::ocpu_start_app("helloworld")
访问http://localhost:5656/ocpu/library/helloworld/info
🌐 调用 Web API
确保你的 OpenCPU 服务正常运行(可以用 Docker 或系统服务),然后通过 curl 调用:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name": "秋先生"}' \
http://127.0.0.1:5656/ocpu/library/helloworld/R/hello/json
返回结果:
"Hello, 秋先生 !"
❓ 调试技巧
-
如何查看所有函数?
浏览器访问:http://127.0.0.1:5656/ocpu/library/helloworld/R/
-
出错怎么办?
API 返回的响应中包含.Rout
链接,点进去查看报错日志。 -
只想测试本地,不装完整服务器?
可以运行:opencpu::ocpu_start_app("./helloworld")
然后访问
http://127.0.0.1:5656
即可。
🐾 结语
OpenCPU 是一个桥梁,让你能用 R 写出真正的 Web API 服务。这个 hello()
函数只是冰山一角:
可以进一步:
- 加入绘图、数据分析函数
- 返回 HTML、PDF 或图像
- 封装数据报表为 API 服务
R,不只是分析,更可以成为你系统的一部分。
如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~
