【发布时间】:2016-08-08 13:24:18
【问题描述】:
我正在编写一个 API wrapper 以使用 httr 包查询英国邮政编码,当我使用 GET 请求时一切正常。在使用POST 请求时,我有点迷茫。
API 的 documentation 是这样说的:
接受包含邮政编码数组的 JSON 对象。返回一个列表 匹配的邮政编码和相应的可用数据。
最多接受 100 个邮政编码。
发布https://api.postcodes.io/postcodes?q=[postcode]
发布数据
此方法需要一个包含邮政编码数组的 JSON 对象 被张贴。例如
{ "邮政编码" : ["PR3 0SG", "M45 6GN", "EX165BL"] }
我尝试了以下方法:
library(httr)
pc_json <- '{
"postcodes" : ["PR3 0SG", "M45 6GN", "EX165BL"]
}'
r <- POST(paste0("https://api.postcodes.io/postcodes?q=", pc_json, encode = "json"))
但它会返回这个:
$状态1400
$error 1 "提交的JSON无效,需要提交一个JSON对象 带有一组邮政编码或地理定位对象"
当我修剪数组并使用它时也会发生同样的情况:
r <- POST("https://api.postcodes.io/postcodes?q=EX165BL")
content(r)
我读过类似的帖子here 和here,但它们并没有让我的问题更容易解决。
有什么解决办法吗?
【问题讨论】:
-
您和@marty_c 可能想在一个 pkg 上进行合作。但是为什么不编写一个同步 data 的 pkg,然后在本地进行所有处理而不是访问 API 服务器呢?从长远来看,它会更快、更高效。
-
感谢您的联系。从长远来看,我的计划是在本地查询数据。包含整个数据的文件似乎非常大,因此将其包含在包中是不可能的。但可以单独下载。
-
您还可以使用 httr 包中的
fromJSON()函数将任何 JSON 数组放入将通过 r 的内容中。