Как получить доступ к API качества воздуха через R? - PullRequest
2 голосов
/ 23 октября 2019

Попытка доступа к API AirQuality , очень плохо знакома с этим и не вижу простых учебных пособий R.

Получил мое имя пользователя и пароль.

И мне интереснополучить данные LA в качестве образца

api.airvisual.com/v2/city?city=Los Angeles&state=California&country=USA&key={{KEY}}

Мои учетные данные

имя пользователя <- "Мой новый бесплатный API-ключ" </strong> (именно так они его дают)

пароль <- "КЛЮЧ" </strong>

Затем я пытаюсь использовать некоторый код из учебных пособий

library(httr)
library(jsonlite)

url <- "api.airvisual.com/v2/city?city=Los Angeles&state=California&country=USA&key={{KEY}}"

endpoint <- "city"

some_data <- GET(url, endpoint)

Это даетмне ошибка

Ошибка в if (is_http) {: аргумент имеет нулевую длину

Их параметры

Параметры

city: английское название города, можно найти, используя соответствующую конечную точку листинга.

state: английское имя штата, можно найти, используя соответствующую конечную точку листинга.

страна: Английское название страны, можно найти, используя соответствующую конечную точку листинга.

Я уверен, что это что-то очень простое, но я никогда неЯ знал это раньше, поэтому я споткнулся. Пожалуйста, порекомендуйте.

UPD.

Когда я использую

url <- "api.airvisual.com/v2/city?city=Los%20Angeles&state=California&country=USA&key={{KEY}}"

с% 20 вместо пробела, это дает мне ошибку

Ошибка в UseMethod ("as.request"): нет применимого метода для as.request, примененного к объекту класса "персонаж"

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Не думаю, что вам нужно указывать конечную точку. Вы можете напрямую использовать GET следующим образом:

require(httr)
response = GET("https://api.airvisual.com/v2/city?city=Los%20Angeles&state=California&country=USA&key={{my_private_key}}")

Если вам в дальнейшем понадобится получить доступ к данным из ответа, код будет:

data = content(response)

data - это список, который выглядиткак:

$status
[1] "success"

$data
$data$city
[1] "Los Angeles"

$data$state
[1] "California"

$data$country
[1] "USA"

$data$location
$data$location$type
[1] "Point"

$data$location$coordinates
$data$location$coordinates[[1]]
[1] -118.2417

$data$location$coordinates[[2]]
[1] 34.0669



$data$current
$data$current$weather
$data$current$weather$ts
[1] "2019-10-23T07:00:00.000Z"

$data$current$weather$tp
[1] 20

$data$current$weather$pr
[1] 1014

$data$current$weather$hu
[1] 52

$data$current$weather$ws
[1] 0.78

$data$current$weather$wd
[1] 345

$data$current$weather$ic
[1] "01n"


$data$current$pollution
$data$current$pollution$ts
[1] "2019-10-23T07:00:00.000Z"

$data$current$pollution$aqius
[1] 37

$data$current$pollution$mainus
[1] "p1"

$data$current$pollution$aqicn
[1] 41

$data$current$pollution$maincn
[1] "p1"

Дайте мне знать, если это работает.

PS Я даже пытался в Лос-Анджелесе использовать% 20 ​​вместо пробела, и это работает.

1 голос
/ 23 октября 2019

Вы должны предоставить схему как часть URL:

library(httr)
GET("https://api.airvisual.com/....")
     ^^^^^^^^
...