R语言 构建REST API

R语言 构建REST API

REST(Representational state transfer)API是一种架构风格,包括构建API的特定约束,以确保它们是一致的、高效的和可扩展的。REST API是一个语法和约束的集合,用于网络服务的开发和运行,包括通过 端点 即提供外部环境接口的URL发送和接收信息。

REST是由Roy Fielding在2000年首次提出的。REST中信息的抽象化被称为资源。REST使用一个资源标识符来识别组件之间互动的特定资源。它允许一个应用程序访问另一个服务器上的资源或功能,该服务器与该应用程序的架构和安全域相距甚远。

理论

REST使用资源方法来执行所需的转换。一个API只有在满足以下条件时才能被认为是RESTful。

  • 统一的接口: 在服务器和客户端之间有一个定义明确的接口。
  • 无状态: 通过请求本身而不是通过外部服务的支持来管理状态。
  • 可缓存: 响应应该是可缓存的,以便提高可扩展性。
  • 客户端-服务器: 客户和服务器之间有明确的分离。
  • 分层系统: 客户应该不知道客户和服务器之间的中介机构。
  • 按需编码: 响应可以包括客户端可执行的逻辑。

使用R编程构建REST API

4种最重要的HTTP协议方法。

  1. GET: 从远程服务器检索数据,可以是单一资源或资源列表。
  2. POST: 在远程服务器上创建一个新的资源。*
  3. PUT : 更新远程服务器上的数据。
  4. DELETE: 从一个远程服务器上删除数据。

REST API可以用于任何语言,因为请求是基于通用的HTTP协议的。在R语言中,我们使用 httr包jsonlite包来 进行GET请求,解析结果,并最终翻阅所有的数据。这需要将GET请求中的原始数据转换为JSON格式,然后再转换为经过解析的数据框架。

在R中的实现

Plumber包 用于创建REST API,如为分析仪表板提供数据等。它允许轻松地将R代码转换为一个端点。

# Installing the package
install.packages("plumber")
  
# Loading package
library(plumber)

使用包构建API

使用plumber包建立一个API。制作两个文件,一个是包含所有端点的 my_api.r ,第二个是 server.r ,通过启动服务器加载API的所有端点。

my_api.R

# Loading package
library(plumber)
  
#* Revert back the input
#* @param msg Input a message to revert
#* @get /revert
revert <- function(msg = "")
{
  list(msg = paste0("The input message is: ", 
                                    msg, "'"))
}
  
#* Plotting a bar graph
#* @png
#* @get /plot
function(){
  normal_func <- rnorm(60)
  barplot(normal_func)
}

服务器.R

# Loading package
library(plumber)
  
# Routing API
r <- plumb("api.R")
  
# Running API
r$run(port = 8000, swagger = TRUE)

输出

  • Normal_func:

使用R编程构建REST API

正态函数用 rnorm() 输出

  • 运行API。

使用R编程构建REST API

api.R文件的运行端口为8000,swagger为TRUE。

  • 在Swagger上Revert()。

使用R编程构建REST API

输入的信息被要求执行该函数。

使用R编程构建REST API

输入的信息以JSON格式和响应头文件输出。

  • Swagger上的Plot()。

使用R编程构建REST API

plot() 是用Swagger UI执行的,也可以用Curl语句来执行。

使用R编程构建REST API

运行 plot() 后,会输出条形图

使用R编程构建REST API

响应头的生成没有默认的响应。

因此,REST API在软件行业和IT行业中每天都被全面使用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程