R语言中的plumber介绍

R语言中的plumber介绍

  • 基本用法
  • 常用 API 方法
    • 1. GET 方法
    • 2. POST 方法
    • 3. 带路径参数的 GET 方法
  • 使用 R 对数据进行操作
  • 处理 JSON 输入和输出
  • 运行 API 的其他选项
  • 其他功能

plumber 是个强大的 R 包,用于将 R 代码转换为 Web API,通过使用 plumber,可轻松地创建 RESTfulI,以便将 R 的数据处理和分析功能暴露给其他应用程序或用户,plumber是一个非常方便的工具,无论是简单的函数调用还是复杂的数据处理,plumber 都能轻松应对

基本用法

示例

library(plumber)#* @apiTitle 简单 API 示例#* @get /echo
#* @param msg Query parameter
#* @response 200 返回传递的消息
function(msg = "") {list(message = paste("你发送的消息是:", msg))
}

其中#* @标记请求参数格式
可将上面的代码保存在一个名为 api.R 的文件中,然后使用以下代码启动 API:

# 启动 API
library(plumber)
r <- plumb("api.R")  # 载入 API 定义
r$run(port = 8000)    # 启动 API 服务器

然后可通过访问 http://localhost:8000/echo?msg=Hello 来测试 API
在这里插入图片描述
在这里插入图片描述

常用 API 方法

1. GET 方法

#* @get /hello
function() {list(message = "Hello, world!")
}

在这里插入图片描述
在这里插入图片描述

2. POST 方法

#* @post /add
#* @param a:num 第一个数字
#* @param b:num 第二个数字
#* @response 200 返回两个数字的和
function(a, b) {result <- as.numeric(a) + as.numeric(b)list(sum = result)
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以使用 POST 请求将数据发送到 /add,比如通过 curl 或 Postman

3. 带路径参数的 GET 方法

#* @get /square/<num>
#* @param num:num 需要平方的数字
#* @response 200 返回平方值
function(num) {result <- as.numeric(num)^2list(square = result)
}

在这里插入图片描述

访问 http://localhost:8000/square/4 将返回 { “square”: 16 }
在这里插入图片描述

使用 R 对数据进行操作

你可以在 API 中使用 R 的数据操作功能。示例如何计算数据框的统计信息:

#* @get /summary
#* @param dataset:string 数据集名称
#* @response 200 返回数据集的描述性统计
function(dataset) {data(mtcars)  # 加载示例数据集if (dataset == "mtcars") {summary(mtcars)} else {list(error = "数据集不存在")}
}

处理 JSON 输入和输出

例如处理 JSON 输入的示例:

#* @post /mean
#* @param numbers:json 一个数字数组
#* @response 200 返回平均值
function(numbers) {mean_value <- mean(unlist(numbers))list(mean = mean_value)
}
可向 /mean 发送一个 JSON 数组,例如:
{"numbers": [1, 2, 3, 4, 5]
}

运行 API 的其他选项

除了直接在脚本中启动 API,还可以使用 RStudio 或命令行工具将其作为服务运行

library(plumber)
# 创建 API 定义
#* @apiTitle 示例 API
#* @apiVersion 1.0.0#* @get /hello
function() {list(message = "Hello, world!")
}#* @post /multiply
#* @param a:num 第一个数字
#* @param b:num 第二个数字
#* @response 200 返回乘积
function(a, b) {list(product = as.numeric(a) * as.numeric(b))
}
# 启动 API
# r <- plumb("path/to/your/api.R")
# r$run(port = 8000)

在这里插入图片描述

其他功能

  • 身份验证:可以通过添加认证逻辑来保护 API
  • 文档生成:使用注释可以生成 API 文档,便于用户了解如何使用
  • 错误处理:可以自定义错误响应
# 安装和加载 plumber 包
# install.packages("plumber")
library(plumber)# 创建自定义错误处理函数
custom_error_handler <- function(req, res, err) {# 创建一个新的响应对象res$status <- 400  # 自定义状态码res$body <- list(error = "400 - Bad Request",message = err$message)return(res)
}# 定义一个算术加法的 API 路由
# @param a number 被加数
# @param b number 加数
# @post /add
# @error custom_error_handler  # 使用自定义错误处理函数
function(a, b) {# 尝试将参数转换为数值类型a_numeric <- as.numeric(a)b_numeric <- as.numeric(b)# 检查是否成功转换if (is.na(a_numeric) || is.na(b_numeric)) {stop("参数 a 和 b 必须为有效的数值")}# 执行加法result <- a_numeric + b_numericlist(result = result)
}

整理不易 如果觉得有帮助,可以打赏下^ _ ^
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/443880.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerJob做定时任务调度

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、区别对比二、使用步骤1. 定时任务类型2.PowerJob搭建与部署 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; PowerJob是基于java开…

如何优化抖音直播间数据?

在数字驱动的时代&#xff0c;缺乏精准的数据支撑&#xff0c;任何线上活动都难以形成有效的流量循环。特别是在抖音直播这一领域&#xff0c;深入理解并优化核心数据&#xff0c;是提升直播效果、吸引并留住观众的关键。那么&#xff0c;抖音直播平台在评估一场直播时&#xf…

【重学 MySQL】四十六、创建表的方式

【重学 MySQL】四十六、创建表的方式 使用CREATE TABLE语句创建表使用CREATE TABLE LIKE语句创建表使用CREATE TABLE AS SELECT语句创建表使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据&#xff08;与CREATE TABLE AS SELECT类似&#xff09;使用CREATE TEMPORARY …

安装最新 MySQL 8.0 数据库(教学用)

安装 MySQL 8.0 数据库&#xff08;教学用&#xff09; 文章目录 安装 MySQL 8.0 数据库&#xff08;教学用&#xff09;前言MySQL历史一、第一步二、下载三、安装四、使用五、语法总结 前言 根据 DB-Engines 网站的数据库流行度排名&#xff08;2024年&#xff09;&#xff0…

【Redis】持久化(上)---RDB

文章目录 持久化的概念RDB手动触发自动触发bgsave命令的运行流程RDB文件的处理RDB的优缺点RDB效果展示 持久化的概念 Redis支持AOF和RDB两种持久化机制,持久化功能能有效的避免因进程退出而导致的数据丢失的问题,当下次重启的时候利用之前持久化的文件即可实现数据恢复. 所以此…

一键生成PPT的AI工具-Kimi!

一键生成PPT的AI工具-Kimi&#xff01; 前言介绍Kimi为什么选择Kimi如何使用Kimi在线编辑PPT下载生成的PPT自己编辑 结语 &#x1f600;大家好&#xff01;我是向阳&#x1f31e;&#xff0c;一个想成为优秀全栈开发工程师的有志青年&#xff01; &#x1f4d4;今天不来讨论前后…

启动hadoop后没有 NodeManager和 ResourceManager

跟着黑马网课学下去时发现我的hadoop启动后没有NodeManager和ResourceManager 找到日志的路径 我在/export/server/hadoop/etc/hadoop/hadoop-env.sh文件里配置了日志存放的路径 这里找到你的日志路径&#xff0c;每个人的习惯和看的教程不同&#xff0c;日志放的地方大概率也…

对象比较工具类:实现对业务的修改记录保存(对象字段差异对比)

测试 1&#xff1a;User类 Data NoArgsConstructor AllArgsConstructor public class User {FieldLabel("姓名")private String name;FieldLabel("年龄")private Integer age;FieldLabel("手机")private String phone;FieldLabel("手机号…

OpenEBS 实现 PV 动态持久化存储安装

什么是 OpenEBS OpenEBS 将 Kubernetes 工作节点可用的任何存储转换为本地或复制的 Kubernetes 持久卷。OpenEBS 可帮助应用程序和平台团队轻松部署需要快速、高持久性、可靠且可扩展的容器原生存储的Kubernetes 有状态工作负载。 安装OpenEBS 1.所有节点安装iSCSI启动器 yu…

PostgreSQL学习笔记四:GUI管理工具

PostgreSQL 是一款广泛使用的开源关系数据库管理系统&#xff0c;拥有许多图形用户界面&#xff08;GUI&#xff09;工具来帮助用户更高效地管理数据库。以下是一些流行的 PostgreSQL 管理工具&#xff1a; pgAdmin&#xff1a; 一个流行的开源 PostgreSQL GUI 工具&#xff0c…

Graph知识图谱融入向量数据库,带来RAG效果飞升

01. 前言 随着大型语言模型&#xff08;LLMs&#xff09;在各种应用中的广泛使用&#xff0c;如何提升其回答的准确性和相关性成为一个关键问题。检索增强生成&#xff08;RAG&#xff09;技术通过整合外部知识库&#xff0c;为LLMs提供了额外的背景信息&#xff0c;有效地改…

Linux-sed和gawk

文本处理-sed编辑器 文本处理-gawk程序 文本处理-sed编辑器基础 文本处理-sed编辑器基础-使用地址 文本处理-sed编辑器基础-删除行 文本处理-sed编辑器基础-插入和附加文本 文本处理-sed编辑器基础-修改行/转换命令 文本处理-sed编辑器基础-回顾打印-打印行/打印行号/列出行 文…

「OC」NSArray的底层逻辑和遍历方法

「OC」NSArray的底层逻辑和遍历方法 文章目录 「OC」NSArray的底层逻辑和遍历方法前言NSArray的底层逻辑占位符init后的空NSArray只有单个元素的NSArray大于一个元素的NSArray可变数组NSMutableArray总结图片 遍历NSArray1. for循环2. 枚举3.for—in4. 多线程1.for 循环&fo…

MES管理系统对中小企业有哪些帮助

MES管理系统解决方案对中小企业具有显著的帮助&#xff0c;主要体现在以下几个方面&#xff1a; 一、提升生产效率 MES管理系统能够实时监控生产过程&#xff0c;提供准确的生产数据和及时的反馈。这种实时监控与数据分析能力&#xff0c;使中小企业能够精准把握生产脉搏&…

华为---MUX VLAN简介及示例配置

目录 1. 产生背景 2. 应用场景 3. 主要功能 4. 基本概念 5. 配置步骤及相关命令 6.示例配置 6.1 示例场景 6.2 网络拓扑图 6.3 配置代码 6.4 配置及解析 6.5 测试验证 配置注意事项 1. 产生背景 MUX VLAN&#xff08;Multiplex VLAN&#xff09;提供了一种通过VLA…

【JavaScript】JavaScript 与 V8

浏览器中运行 html 和 css 代码&#xff1a; html 和 css 执行过程&#xff1a; js 由 js 引擎&#xff08;比如现在最为主流的 V8&#xff09;执行。 高级的编程语言都是需要转成最终的机器指令来执行的&#xff1b;事实上我们编写的JavaScript无论你交给浏览器或者Node执行&…

升级 OpenSSL 的详细步骤(解决 SSH 漏洞的前提)

目录 前言1. 准备工作1.1 安装必要的依赖1.2 下载 OpenSSL 源码 2. 解压和配置2.1 解压文件2.2 配置编译参数 3. 编译和安装3.1 编译源码3.2 安装 OpenSSL 4. 验证安装5. 解决 SSH 漏洞的必要性6. 结语 前言 在信息安全的时代&#xff0c;服务器的安全性至关重要。特别是在互联…

高被引算法GOA优化VMD,结合Transformer-SVM的轴承诊断,保姆级教程!

本期采用2023年瞪羚优化算法优化VMD&#xff0c;并结合Transformer-SVM实现轴承诊断&#xff0c;算是一个小创新方法了。需要水论文的童鞋尽快&#xff01; 瞪羚优化算法之前推荐过&#xff0c;该成果于2023年发表在计算机领域三区SCI期刊“Neural Computing and Applications”…

智能配音软件哪款好?分享5个搞怪软件

想要让视频或社交媒体内容更加生动有趣&#xff1f;搞笑配音软件是个不错的选择。 无论是嘻哈风格的视频&#xff0c;还是搞怪的段子&#xff0c;合适的配音都能让内容增色不少。 今天&#xff0c;就让我们来探索六个文字配音软件&#xff0c;它们不仅能帮你实现搞笑配音&…

Centos7安装RocketMQ[图文教程]

文章目录 RocketMQ介绍基于Linux服务部署RocketMQ&#xff08;单机&#xff09;配置JDK环境下载RocketMQ部署RocketMQ1、解压2、修改VM参数3、配置环境变量4、编写Service文件5、启动服务 基于Docker方式部署RocketMQ安装Docker编写docker-compose文件启动RocketMQ服务 部署Roc…