首页 > 解决方案 > 是否可以在 R Plumber 中将每个端点分成自己的文件?

问题描述

我希望分离出我复杂的 API 结构,以便我具有以下结构。我想知道。有没有办法将 users/ 文件夹下的所有文件挂载到同一个 ./api/v1/users 路由?项目/?需要考虑的一个关键点是,我也会在这些文件中定义动态路由(例如 ./projects/<project_id>)

在闪亮的情况下,要完成这样的 Id 使用 source('file.R', local=TRUE) 但 Plumber 的工作方式不同。我以这种方式构建它的原因是为了降低开发过程中的复杂性(而不是向同一个端点添加多个动词)。

+-- v1/
|+-- users/
|+----- GET.R
|+----- POST.R
|+-- projects/
|+----- GET.R
|+----- POST.R

我已经测试了挂载,但不幸的是无法将每个文件夹中的多个文件挂载到相同的路由名称。查看示例代码

v2 <- plumber::Plumber$new("api/v1/projects/GET.R")
root$mount(paste0(ROOT_URI,"/v1"), v2)
v1 <- plumber::Plumber$new("api/v1/projects/POST.R")
root$mount(paste0(ROOT_URI,"/v1"), v1)

(在 GET.R 和 POST.R 文件中,每个都有一个名为“projects”的函数,用于处理两个动词之一)

标签: rrestplumber

解决方案


答案有点像。使用 'here' 包允许您导入在与管道工文件相关的文件中定义的函数。然后在您的管道工文件中,您可以填写您的装饰器并将您的功能放在它之后。


推荐阅读