2017-02-21 3 views
0

Ich versuche, Informationen von der RIDB-API (Regierung Erholungsdaten) zu bekommen. Ich bin jedoch verwirrt, wie die URL-Parameter zu verwenden sind. Ich habe Beispiele gesucht und viele verschiedene Dinge ausprobiert.URL Parameter Was mache ich falsch?

Zuerst, um zu starten, habe ich https://ridb.recreation.gov/api/v1/trails/USFS/, die gut funktioniert. Ich bekomme ein JSON-Ergebnis mit perfekten Trail-Informationen. Wenn ich jedoch https://ridb.recreation.gov/api/v1/trails/USFS/milesmin10 oder https://ridb.recreation.gov/api/v1/trails/USFS/milesmin=10 oder https://ridb.recreation.gov/api/v1/trails/USFS?milesmin=10 oder https://ridb.recreation.gov/api/v1/trails/USFS?milesmin10 als Beispiele versuche, bekomme ich nichts zurück. Wie Sie aus dem angehängten Bild sehen können milesmin ist ein akzeptabler Parameter, kann jemand erklären, wie diese Parameter in meinem Code enthalten sind und/oder was ich offensichtlich falsch mache.

URL Parameters

+0

Von dem, was Sie gesagt haben, endet der Endpunkt mit einem Schrägstrich, so einen URL-Parameter hinzugefügt danach sein sollte: 'http://ridb.recreation.gov/api.v1.trails/USFS/? milesmin = 10' – pbuck

+2

'https: //ridb.recreation.gov/api/v1/trails/USFS/? milesmin = 10' &' https://ridb.recreation.gov/api/v1/trails/USFS?milesmin = 10' arbeiten beide für mich. –

+0

@NiteshVerma Sie haben Recht. Sie funktionieren, ich merkte, dass meine URL falsch gebildet wurde, als ich den API-Schlüssel am Ende der URL hinzufügte. Das ist in Ordnung, aber ich brauche das Zeichen '&' vor dem Schlüssel, damit es funktioniert. Die als "beste" gekennzeichnete Antwort löst diese Art von Problemen. – MingyJ

Antwort

1

I verwendet requests, und es funktionierte gut. Sie müssen sich für their API key registrieren, um diesen Service zu nutzen. Der Prozess war schnell und ich hatte einen Schlüssel in weniger als 5 Minuten. Hier ist der Code, mit dem die Ergebnisse erzielt wurden.

import requests 

# You must replace <your api key> with the key they give you 
api = <your api key> 
url = 'https://ridb.recreation.gov/api/v1/trails/USFS/' 

params = {'milesmin': 10, 'apikey': api} 

r = requests.get(url, params=params) 


# In [168]: r.request.url 
# Out[168]: 'https://ridb.recreation.gov/api/v1/trails/USFS/?milesmin=10&apikey=<your api key>' 

# In [169]: r.text[:500] 
# Out[169]: u'{"RECDATA":[{"TypicalTreadWidth":"N\\/A","MinimumTrailWidth":"N\\/A","TypicalTreadCrossSlope 
# ":"N\\/A","TerraMotorized":"N\\/A","AllowedSnowUse":"N\\/A","PackSaddleRestricted":"N\\/A", 
# "TrailSurface":"N\\/A","TrailNo":"8021SA","AllowedTerraUse":"N\\/A","XcountrySkiAccptDisc":"N\\/A", 
# "TrailUSFSID":20,"NonmotorWatercraftManaged":"N\\/A","XcountrySkiManaged":"N\\/A", 
# "BicycleManaged":"N\\/A","ShapeLength":0.5105766578900838,"MVUMSymbol":99, 
# "MotorcycleManaged":"N\\/A","GEOM":"LINESTRING (-111.69189874799997 39.9735' 
+0

Danke! Ihre Antwort zeigt eine Möglichkeit, den Fehler zu vermeiden, den ich gemacht habe. Ich hatte 'https: //ridb.recreation.gov/api/v1/trails/USFS?PIKEY' also als ich die Parameter hinzugefügt hatte ich' https://ridb.recreation.gov/api/v1/trails/USFS "APIKEY? Params" funktioniert natürlich nicht, ohne das "&" -Symbol zu benutzen. Ihre Methode ist eindeutig überlegen, also danke! – MingyJ