2016-08-20 3 views
0

Ein R-Paket, das ich verwende, genderizeR, hat ein monatliches Limit von 1000 Einträge für den freien Plan. Die Funktion ist über API mit der Datenbank genderize.io verbunden.R: Client Fehler: Request URI zu lang

So kaufte ich den kommerziellen Plan mit einem größeren monatlichen Limit, und verwenden Sie den API-Schlüssel in R wie folgt aus:

genderizeAPI (vector, apikey="my_api_key")

Allerdings habe ich den folgenden Fehlercode:

Client error: (414) Request-URI Too Long

All Idee, wie ich das lösen kann?

+0

414 bedeutet, dass die URL zu lang ist, also nichts mit Authentifizierung zu tun hat. – sckott

Antwort

0

Der Code wird dies zu tun:

query <- as.list(x) 
names(query) <- paste0("name[", 0:(length(x) - 1), "]") 
if (!is.null(apikey)) { 
    query <- c(apikey=apikey, query) 
} 
r <- httr::GET("https://api.genderize.io", 
       query = query, 
       httr::config(ssl_verifypeer=ssl.verifypeer)) 

die Abfrage zu erstellen, um die API zu senden. Es übersetzt letztlich so etwas wie:

genderizeAPI(c("jan", "maria", "norbert")) 

in:

https://api.genderize.io?name[0]=jan&name[1]=maria&name[2]=norbert 

was bedeutet, dass (letztlich) Sie zu groß einen Vektors in den genderizeAPI() Anruf vorbei sind.

Die genderize.io Website clearly states dass „Die API auf maximal 10 Namen pro Anforderung begrenzt“. Stellen Sie sicher, dass der übergebene Vektor < = 10 Elemente ist. Ehrlich gesagt wäre ein besseres API-Paket dafür verantwortlich gewesen, und ich wäre geneigt (wenn ich Sie wäre), einen Fehlerbericht/eine Funktionserweiterung mit dem Autor https://github.com/kalimu/genderizeR/issues einzureichen.