繁体   English   中英

如何从 R 中的 WTO API 获取数据

[英]how to get data from the WTO API in R

library(httr)
library(jsonlite)

headers = c(
  # Request headers
  'Ocp-Apim-Subscription-Key' = '{subscription key}'
)

params = list()

# Request parameters
params['countries[]'] = '{array}'


resp <- GET(paste0("https://api.wto.org/tfad/transparency/procedures_contacts_single_window?"

               , paste0(names(params),'=',params,collapse = "&")),

        add_headers(headers))

if(!http_error(resp)){    
  jsonRespText<-fromJSON(rawToChar(content(resp,encoding = 'UTF-8')))$Dataset

  jsonRespText

}else{
  stop('Error in Response')
}

我不知道如何从 R 中的 API 获得响应。 我已经执行了这段代码,但服务器没有响应......

如果您在运行代码后检查resp的 object 的值,您会注意到一个状态代码:

> resp
Response [https://tfadatabase.org/api/transparency/procedures_contacts_single_window?countries[]=%7Barray%7D]
  Date: 2020-04-17 19:25
  Status: 422
  Content-Type: application/json
  Size: 77 B

所以服务器实际上确实响应了,它只是没有给你你所希望的。 在 API 文档中,我们可以查找以下代码:

422 无法处理的实体

如果找不到成员,或者请求参数格式不正确。

所以我只是去查询生成器并寻找一个有效的请求 URL 并更新了代码。 它运行良好 - 即状态 200。

这是我在代码中使用的 URL:

https://api.wto.org/timeseries/v1/data?i=TP_A_0100&r=000&fmt=json&mode=full&lang=1&meta=false

resp的值是

  Date: 2020-04-17 19:30
  Status: 200
  Content-Type: application/json; charset=utf-8
  Size: 88 B

我在上面的结果中删除了订阅密钥。 您可以在此处找到查询生成器。 顺便说一句,在查询生成器中,它会自动在 URL 中包含订阅密钥和其他“标题”信息。 您可以先将其删除,然后将其重新添加到您的代码中,或者只需更改您的代码以直接在其 URL 版本上运行GET()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM