Indholdsfortegnelse

Følgende kodeeksempler er tilgængelige her på siden.


Python

For at kunne køre eksemplet herunder skal Python installeres. Se vejledninger og hent installationen på Pythons egen hjemmeside: python.org.
Scriptet gør brug af requests pakken. Installer den ved at køre følgende kommando.


   python -m pip install requests

Følgende Python kode henter et dataudtræk fra API'et.


   #Følgende moduler skal importeres da der anvendes funktioner fra dem
   import requests
   import json

   #URL til dataudtræk (statistik)
   api_url = "https://api.uddannelsesstatistik.dk/Api/v1/statistik"
   
   #Her indsættes api-nøgle
   api_key = INSERT KEY HERE
   
   #Her indsættes forespørgsel fra Online Værktøj
   query = INSERT QUERY HERE

   #Der sendes en POST-anmodning til API'en med angivet URL, forespørgsel og api-nøgle
   #Svaret gemmes i variablen: response
   headers = {"content-type":"application/json", "authorization":"Bearer %s" % api_key}
   response = requests.post(api_url, data=json.dumps(query), headers=headers)
   response.json()

Afvikles scriptet fås følgende resultat.


.NET Core

For at kunne køre eksemplet herunder skal .NET Core installeres. Se vejledninger og hent installationen på Microsofts egen hjemmeside: https://dotnet.microsoft.com/en-us/download.
Programmet herunder er skrevet i C#.


    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;

    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var url = "https://api.uddannelsesstatistik.dk";
                var path = "/api/v1/statistik";
                var key = "INSERT KEY HERE";
                var query = "INSERT QUERY HERE";

                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri(url);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", key);
                var response = client.PostAsync(path, new StringContent(query, UnicodeEncoding.UTF8, "application/json")).Result;
                if (response.IsSuccessStatusCode)
                {
                    var result = response.Content.ReadAsStringAsync().Result;
                    Console.WriteLine(result);
                }
            }
        }
    }

Afvikles programmet fås følgende resultat.


Javascript

Javascript afvikler i alle moderne browsere, og gør det nemt at lave kodede tilføjelser til web sider. Javascript kommer som en del af browseren, og der er ikke behov for yderligere installation eller tilføjelser for at begynde at bruge JavaScript.
Modulet herunder gør det nemt at hente data fra vores API.


    function QueryHelper(key, annotation = "") {
        this.url = "https://api.uddannelsesstatistik.dk/Api/v1/";
        this.key = key;
        this.annotation = annotation;

        this.DoQuery = async function (endpoint, qry, accept) {
            return fetch(this.url + endpoint, {
                method: 'POST',
                cache: 'no-cache',
                headers: {
                "Authorization": "Bearer " + this.key,
                "Accept": accept,
                "Content-type": "application/json",
                "Annotation": this.annotation,
            },
            body: JSON.stringify(qry)
            }).then(data => {
                if (data.status == 200 && accept == "application/json")
                    return data.json().then(text => { return text });
                else if (data.status == 200)
                    return data.text().then(text => { return text });
                return Promise.reject(data);
            });
        }

        this.DoSchemaQuery = async function (qry, accept = "application/json") {
            return this.DoQuery("skema", qry, accept);
        }

        this.DoDataQuery = async function (qry, accept = "application/json") {
            return this.DoQuery("statistik", qry, accept);
        }
    };

Modulet anvendes på følgende måde


    var key = "ADD KEY HERE";
    var qry = ADD QUERY HERE;
    var qh = new QueryHelper(key, "JavaScript Example");
    qh.DoDataQuery(qry).then(data => {
        ADD LOGIC HERE
    }).catch((ex) => {
        ex.text().then(txt => { console.log(txt); });
    });

Afvikles scriptet fås følgende resultat.


Java

For at kunne køre eksemplet herunder skal Java installeres. Se vejledninger og hent installationen på Javas egen hjemmeside: www.java.com.

Følgende Java kode henter et dataudtræk fra API'et.


    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;

    class JavaExample {
        public static void main(String[] args) {
            try {
                // Sending get request
                URL url = new URL("https://api.uddannelsesstatistik.dk/Api/v1/statistik");
                String qry = "INSERT QUERY HERE";
                String key = "INSERT KEY HERE";
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestProperty("Accept", "application/json");
                conn.setRequestProperty("Authorization","Bearer " + key);
                conn.setRequestProperty("Content-Type","application/json");
                conn.setRequestMethod("POST");
                conn.setDoOutput(true);
                OutputStream os = conn.getOutputStream();
                os.write(qry.getBytes());
                os.flush();
                os.close();

                BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String output;
                StringBuffer response = new StringBuffer();
                while ((output = in.readLine()) != null) {
                    System.out.println("Response:-" + output.toString());
                }
                in.close();
            } catch(Exception ex) {
                System.out.println(ex.toString());
            }
        }
    }

Afvikles scriptet fås følgende resultat.


PHP

For at kunne køre eksemplet herunder skal PHP installeres. Se vejledninger og hent installationen på PHPs egen hjemmeside: www.php.net.


try {
    $url = "https://api.uddannelsesstatistik.dk/Api/v1/statistik";
    $data = 'INSERT QUERY HERE';
    $key = "INSERT KEY HERE";
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json' , 
        'Authorization: Bearer '.$key 
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $result = curl_exec($ch);
    if(curl_errno($ch)){
        echo 'Curl error: ' . curl_error($ch);
    }
    $data = json_decode($result, true);
    print_r($data);
    curl_close($ch);
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

Afvikles scriptet fås følgende resultat.


Windows Powershell

Følgende script kan afvikle på et Windows styresystem i en Powershell kommando prompt.


$key = 'INSERT KEY HERE''
$data = 'INSERT QUERY HERE'

$headers = @{
    accept = "application/json";
    "content-type" = "application/json; charset=utf-8";
    authorization = "Bearer $key";
}

Invoke-WebRequest -H $headers -B ([System.Text.Encoding]::UTF8.GetBytes($data)) -Method 'POST' -Uri https://api.uddannelsesstatistik.dk/Api/v1/statistik 

Afvikles scriptet fås følgende resultat.


Linux curl

Følgende script kan afvikle på et Linux styresystem ved at bruge kommandoen curl.


curl --insecure -X POST \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "authorization: Bearer INSERT KEY HERE" \
-d 'INSERT QUERY HERE' \
https://api.uddannelsesstatistik.dk/Api/v1/statistik

Afvikles scriptet fås følgende resultat.


R

For at kunne køre eksemplet herunder skal R installeres. Se vejledninger og hent installationen på R's egen hjemmeside: www.r-project.org.

Følgende R kode henter et dataudtræk fra API'et.


#For at kunne bruge funktioner til kaldet af API'et skal der installeres følgende pakker
install.packages("httr")
install.packages("jsonlite")

#Herefter anvendes pakkerne i biblioteket
library(httr)
library(jsonlite)


#De forskellige dele, som indgår i kaldet, kan i R gemmes som objekter vha. '<-' 
#De efterfølgende skridt er de forskellige dele, der gemmes som forskellige objekter
#URL til dataudtræk (statistik)
URL_stat                <- 'https://api.uddannelsesstatistik.dk/api/v1/statistik'

#Heri indsættes api-nøgle. Det er vigtigt at der skrives "Bearer ", dvs. inkl. mellemrum
auth_key                <- 'Bearer  [Indsæt api-nøgle her]'

#Her indsættes JSON strengen
#OBS! JSON-strengen skal ikke være formateret fra online toolet af hensyn til R's håndtering af linjeskift
query                   <- '[Indsæt query fra online toolet her]'

#Her ændres formatet i JSON-strengen vha. escape karakterer, så API'et kan læse JSON koden
format_query            <- gsub('"', '\"', query)

#Her defineres loopet til forespørgsel af multiple pages:
page                    <- 1
api_response_length     <- 1
data                    <- list()

while (api_response_length > 0) {
    change_page           <- gsub('1', page, format_query)
    kald                  <- POST(url = URL_stat, add_headers(Authorization = auth_key), content_type_json(), accept_json(), encode = "json", body = fromJSON(change_page, simplifyVector = FALSE))
    indhold_kald          <- content(kald, as = "text")
    apiresponse           <- fromJSON(indhold_kald)
    data[[page]]          <- apiresponse
    api_response_length   <- length(apiresponse)
    page                  <- page + 1
                                }

#loopet bindes her til et objekt, som danner en tabel med resultatet af forespørgslen:
Dataudtraek             <- do.call(rbind, data)
Dataudtraek

Afvikles scriptet fås følgende resultat.