【问题标题】:What's the easiest way to deploy an API incorporating R functions? [closed]部署包含 R 函数的 API 的最简单方法是什么? [关闭]
【发布时间】:2014-01-01 19:23:42
【问题描述】:

我想使用包含以下变量的大约 50,000 个犯罪的数据框制作一个本地犯罪 API;犯罪类型作为一个因素,犯罪日期,纬度和经度。

我想在我的函数中使用我的构建来选择时间范围、犯罪类型,最重要的是只返回在给定纬度和经度的给定半径内发生的犯罪。

我已经自学了如何将 GET 和 POST 用于 api 以及在 R 对象和 json 之间进行转换,但我对构建 api 知之甚少。如果有人请为我提供一些关于由 Web 服务托管的简单实现的指导,这将是很棒的。用于试验的免费托管将是首选,但如果有一种简单的方法可以以微不足道的价格实现这一点,那就太酷了。

谢谢

【问题讨论】:

  • 看看Shiny
  • 我还没有开始打电话给闪亮。我将如何对您给我的链接中的直方图示例进行 API 调用?
  • 您是要实际呈现网页,还是仅向 URL 提供内容?
  • 不清楚。你想用 R 编写一个服务器(参见 Rook,Rserve)与其他 Web 技术(RApache?)集成还是什么?你写过代码还是只是理论上知道你想做什么?

标签: r api


【解决方案1】:

对于简单的 API 调用,我相信最好使用RApache。 按照http://rapache.net/manual.html中的说明安装RApache

在 httpd.conf 中设置 Apache 指令,这将确保 /var/www/brew 下的所有文件都被解析为 R 脚本

<Directory /var/www/brew>
    SetHandler r-script
    RHandler brew::brew
</Directory>

使用您的 API 制作您的 R 脚本,例如mycrimeapi.R 并将其放在 /var/www/brew 文件夹下。这个 R 脚本文件可以例如如下所示:

<%
require(jsonlite)
load("yourdataset.RData") # this contains your crimes data frame
mycrimes <- subset(crimes, crimetype %in% GET$crime & crimedate %in% as.Date(GET$crimedate))
cat(toJSON(mycrimes))
%>

现在有人可以通过调用 http://localhost/brew/mycrimeapi.R?crime=crimewhichisreallynasty&amp;crimedate=2014-01-01 来调用您的 API。将 localhost 替换为您托管 API 的服务器的 IP。

在使用 RApache 时,每次您都会获得 GET, POST, COOKIES, FILES, SERVER 变量,这些变量会传递给 API 调用。因此,如果您想在调用中使用 POST 而不是 GET 示例,请继续。有关这些变量,请参阅 http://rapache.net/manual.html 中的文档。

【讨论】:

  • 这看起来正是我正在寻找的。我得花几天时间才能拿到我的 linux 机器,所以我必须在几天后回到这个问题。
  • 我无法部署 api,但我批准了这个答案,因为它很受欢迎。我在使用 rapache 时遇到了麻烦,当我弄清楚这一切时,我会回来的。再次感谢。
猜你喜欢
  • 2013-06-15
  • 2019-05-23
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2014-12-20
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多