Trafiklab - ansluta till ett API
Vi ska nu titta på hur man kan kontakta ett API hos Trafiklab. För detta krävs att du registrerat dig som person samt att du skapat ett projekt hos dem. I exemplen kommer vi att använda oss av "SL Platsuppslag", så registrera att ditt projekt använder sig av detta API och hämta ut en API-nyckel. Om du inte har gjort dessa saker, så passa på att göra det nu. Då blir det enklare att följa med i exemplen och du kan testa saker för dig själv.
"SL Platsuppslag"
"SL Platsuppslag" är ett API som kan ge oss information om en plats genom att ange platsens namn (eller delar av platsens namn). Man kan söka efter hållplatser, adresser och platser. Om du går in under dokumentationen för "SL Platsuppslag", så ser du att det finns ett enda API-anrop som vi kan utföra mot detta API. Detta är ett REST-anrop och anropet utformas följdaktligen som en URL.
Anrops-URL
En anrops-URL för detta API ska anges enligt följande mall (för korthetens skulle, utelämnar vi de parametrar som inte är obligatoriska):
api.sl.se/api2/typeahead.<FORMAT>?key=<DIN NYCKEL>&searchstring=<SÖKORD>
Alla bitar som anges i formen "<NÅNTING>
" är parametrar som du behöver fylla i med information som gäller för just ditt anrop. Vi går igenom vad dessa ska sättas till:
Parametrar
- <FORMAT>
- Vilken typ av svars data vill du ha? JSON eller XML.
- <DIN NYCKEL>
- Här anger du din API-nyckel.
- <SÖKORD>
- Söksträngen som anger vad du vill söka efter.
Följande går att sätta, men de är inte obligatoriska:
- <ENDAST STATIONER>
- Vill du enbart söka på stationsnamn. Kan sättas
true
ellerfalse
. Defaultvärdet ärfalse
. - <MAX ANTAL SVAR>
- Hur många svar vill du maximalt erhålla. 50 är max. Defaultvärdet är
10
.
Exempel
En fullständig söknings-URL skulle alltså kunna tänkas se ut så här (förutom att det är fejkad API-nyckel:
https://api.sl.se/api2/typeahead.json?key=BADA551337&searchstring=gata
Prova att klippa ut ovanstående URL, klistra in den i URL-fältet på en webbläsare och ersätt BADA551337
med din API-nyckel. Tryck på enter och du bör få svar ifrån servern. Svaret du erhåller visar alla platser som innehåller strängen "gata". Svårare än så är det inte att kontakta detta API! De flesta REST-API:er har den fördelen att man enkelt kan testa dem direkt i sin webbläsare.
Vi modifierade exempelt ovan så att enbart en resultat ska returneras. När vi provkörde fick vi följande resultat (omformaterat för att bli mer läsbart):
{
"StatusCode":0,
"Message":null,
"ExecutionTime":0,
"ResponseData":[
{
"Name":"Gatan (Ekerö)",
"SiteId":"3254",
"Type":"Station",
"X":"17674411",
"Y":"59357481"
}
]
}
(Om du själv vill snygga till JSON-kod så den blir mer lättläst för människor kan du prova den här resursen; JSON Formatter & Validator.)