使用R编程访问REST API

使用R编程访问REST API

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

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

使用R编程访问REST API

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中的实现

API

电影《 银河护卫队2 》的API是在2017年5月5日发布的,时长136分钟,由James Gun导演。它是一部动作、喜剧、冒险和科幻电影。该API是OMDB的,OMDB是一个开放的网络服务,承载电影信息。

# Installing the packages
install.packages("httr")
install.packages("jsonlite")
 
# Loading packages
library(httr)
library(jsonlite)
 
# Initializing API Call
call <- "http://www.omdbapi.com/?i=tt3896198&apikey=948d3551&plot=full&r=json"

使用包访问电影API

在R中使用httr包和jsonlite包访问电影API。

# Getting details in API
get_movie_details <- GET(url = call)
 
# Getting status of HTTP Call
status_code(get_movie_details)
 
# Content in the API
str(content(get_movie_details))
 
# Converting content to text
get_movie_text <- content(get_movie_details,
                          "text", encoding = "UTF-8")
get_movie_text
 
# Parsing data in JSON
get_movie_json <- fromJSON(get_movie_text,
                           flatten = TRUE)
get_movie_json
 
# Converting into dataframe
get_movie_dataframe <- as.data.frame(get_movie_json)

输出

  • 状态_代码。

使用R编程访问REST API

状态_代码

状态代码200表明API的数据被成功请求、响应和接收。

  • API中的内容

使用R编程访问REST API

使用 content() 函数显示请求的API数据。

  • get_movie_text:

使用R编程访问REST API

API中的数据被转换为文本格式。

  • get_movie_json:

使用R编程访问REST API

API中的数据被解析成JSON格式。

REST API在许多技术行业和子领域,如网络服务、人工智能中得到了充分的应用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程