søndag 18. desember 2011

regObs, Utviklerskolen del 1

I regObs utviklerskolen skal jeg ta for meg det grunnleggende som skal til for å kunne utvikle applikasjoner eller tjenester som benytter seg av regObs api'et. Utviklerskolen består av følgende deler:

  1. Hvordan se på og hente ut data fra regObs api'et vha. OData.
  2. Hente ut data fra regObs vha. JQuery og Ajax.
  3. Hente ut data fra regObs vha. VisualStudio og .NET
  4. Logge på regObs for å hente ut beskyttet data.
  5. Registrere en hendelse i regObs vha. VisualStudio og .NET
I denne delen så skal jeg se på hvordan man enkelt kan få ett overblikk over regObs api'et. Siden regObs api'et benytter seg av OData så finnes det en del 3'parts verktøy som vi kan benytte for å få ett overblikk over api'et, eksempel på to gratise verktøy er Silverlight OData Explorer og Linqpad


Eksempel på bruk av Silverlight OData Explorer hvor du enkelt får ett overblikk over datamodellen i regObs, samt at du kan gjøre spørringer.







Du trenger ikke disse verktøyene for å få ett overblikk du kan veldig enkelt benytte deg av nettleseren for å få en oversikt samt gjøre spørringer. Det eneste du trenger å gjøre er å taste inn adressen til api'et eks http://h-web01.nve.no/regobsservices/odata.svc/ og du vil da få listet ut datamodellen:

Vi kan nå starte å benytte oss av kraften som finnes i OData hvor det gir oss veldig mange muligheter til gjøre spørringer for å hente ut de dataene vi selv ønsker.










Eksempel så kan jeg hente ut språk fra Language tabellen ved å legge til navn på entiteten i adressen, eks:
http://h-web01.nve.no/regobsservices/odata.svc/Language()

Data blir da listet ut i atom format.






Hvis jeg ønsker å få listet ut data i json format istedenfor så kan jeg spesifiserer dette i adressen ved å skrive inn ?$format=json , eksempelvis http://h-web01.nve.no/regobsservices/odata.svc/Language/?$format=json

Vi kan også gjøre mer avanserte spørringer eksempelvis så kan jeg hente ut registreringer på hendelser som ikke er eldre en 20 dager:
http://h-web01.nve.no/regobsservices/odata.svc/Registration()?$filter=(Incident ne null) and (DtRegTime gt datetime'2011-11-28T00:00:00+01:00')&$expand=Incident

Mer om hvilke muligheter som finnes gjennom OData kan du finne på http://www.odata.org/developers

lørdag 17. desember 2011

regObs, utviklerskolen del 2

I denne delen skal jeg ta for meg ett enkelt eksempel på hvordan man kan benytte seg av regObs Odata api for å hente ut de forskjellige hendelsetypene i regObs. Jeg lager en enkel webside som kun benytter seg av JQuery og Ajax

Det første jeg gjør er å referere til JQuery som jeg bruker til å manipulere data i html siden og gjøre Ajax kall.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

Deretter legger jeg inn en div hvor jeg ønsker å vise hendelsetypene.
<div id="result"></div>

Neste trinn blir å bygge opp en url for å hente ut ønsket resultat. Her vet jeg at data jeg ønsker å hente ligger i Entiteten GeoHazardKD og jeg filtrerer ut kun de norske tekstene (LangKey = 1).
http://h-web01.nve.no/regobsservices/odata.svc/GeoHazardKD()?
$filter=(cast(LangKey,'Edm.Int32')) eq 1

Da er det klart for å gjøre ett enkelt Ajax kall for å hente data. Før jeg gjør kallet så legger jeg til callback på url samt definerer at jeg ønsker json som format på data'ene mine. I tillegg har jeg laget en enkel displayfunksjon som lister ut data i div taggen som jeg definerte tidligere.
<script type="text/javascript">
    $(document).ready(function () {        
        var url = "http://h-web01.nve.no/regobsservices/odata.svc/GeoHazardKD()?
$filter=(cast(LangKey,'Edm.Int32')) eq 1&$callback= displayResults&$format=json";
        $.ajax({
            dataType: 'jsonp',
            url: url
        });
    });
    function displayResults(results) {
        $.each(results.d.results, function (i, item) {
            $('#result').append(item.GeoHazardName +'<br />');
        });
    };
</script>
Ved å sette dette sammen i en enkel html side så får du nå listet ut de forskjellige hendelsetypene i regObs.