[ IN ENGLISH ]

Store dele af H.C. Andersen-Centrets viden er fra d. 27.3. 2013 gjort frit tilgængelige som REST web services.

Web services egner sig ikke til almindelig web-browsing, men til udviklere på andre systemer, der kan hente data og vise dem, som de vil.

Indholdslister

Se forneden under Individuelle data, hvordan man henter enkelte breve, personer og bibliografi-poster.

Breve efter person og/eller dato eller periode

Man før alle breve fra og til en person ved at angive person-ID efter mønstret /letters/person/{person-ID}, f.eks. https://andersen.sdu.dk/service/letters/person/2.

Breve kan hentes efter dato efter mønstret /letters/date/{YYYY[-MM[-DD]]}, dvs. /letters/date/ efterfulgt af et år, år-måned eller år-måned-dag. Eksempler:

Person og dato/periode kan kombineres efter mønstret /letters/person/{person-ID}/date/{YYYY[-MM[-DD]]}, f.eks. alle breve til og fra H.C. Ørsted i 1846: https://andersen.sdu.dk/service/letters/person/1126/date/1846.

Breve med usikker datering

Brevbasen indeholder breve, hvis datering er usikker. Usikkerheden kan gælde enten år, måned eller dag. Breve fra 1823 med uvis måned er indeholdt i visningen af breve fra 1823 (første link ovenfor), men kan også vises for sig, hvis man angiver 00 for måned:

Bemærk: ukomplette oplysninger

Nogle breve har flere afsendere eller modtagere. Det ignoreres i denne web service. Hent det enkelte brev for at få komplette oplysninger.

Udgivelser (bibliografi) efter dato eller periode og/eller sprog

Udgivelser kan hentes efter dato efter mønstret /biblio/date/{YYYY[-MM[-DD]]}, dvs. /biblio/date/ efterfulgt af et år, år-måned eller år-måned-dag. Eksempler:

Udgivelser på et bestemt sprog hentes efter mønstret /biblio/language/{sprogkode}, dvs. /biblio/language/ efterfulgt af en sprogkode på tre små bogstaver (ISO 639-2/B). For eksempel al litteratur på polsk fra vores database: https://andersen.sdu.dk/service/biblio/language/pol.

Sprog og sprogkoder

Bemærk, at tysk ('ger') inkluderer plattysk ('nds').
Tabellen indeholder alle mulige sprog i vores database. Der er ikke nødvendigvis registreret litteratur på dem alle.

SprogSprogkode
afrikaansafr
albanskalb
arabiskara
armenskhye
bosniskbos
bulgarskbul
danskdan
engelskeng
esperantoepo
estiskest
finskfin
franskfre
frisiskfry
færøskfao
galiciskglg
græskgre
grønlandskkal
hebræiskheb
hindihin
hollandskdut
indonesiskind
interlinguaina
irskgle
islandskice
italienskita
japanskjpn
jiddischyid
katalanskcat
kinesiskchi
kroatiskhrv
lettisklav
litauisklit
maltesiskmlt
moldaviskmol
norsknor
persiskfas
plattysknds
polskpol
portugisiskpor
rumænskron
russiskrus
serbisksrp
slovakiskslo
slovenskslv
somalisom
spanskspa
svenskswe
tatarisktat
tjekkiskcze
tyrkisktur
tyskger
ukrainskukr
ungarskhun
urduurd
vietnamesiskvie
volapükvol
zuluzul

Sprog og dato/periode kan kombineres efter mønstret /biblio/date/{YYYY[-MM[-DD]]}/language/{sprogkode}, f.eks. alle engelske udgivelser i 1847: https://andersen.sdu.dk/service/biblio/date/1847/language/eng.

Individuelle data

Enkelte emner, f.eks. et brev, hentes efter disse mønstre:

Teknik

Request method

Den eneste fungerende request method er GET, dvs. man kan hente, men ikke ændre data.

Formater og parametre

Servicen returnerer JSON eller JSONP, hvis man tilføjer '?callback={callback-identifier}', altså f.eks. https://andersen.sdu.dk/service/biblio/1?callback=return. callback-identifier virker med følgende værdier, ellers får man JSON:

'break', 'do', 'instanceof', 'typeof', 'case', 'else', 'new', 'var', 'catch', 'finally', 'return', 'void', 'continue', 'for', 'switch', 'while', 'debugger', 'function', 'this', 'with', 'default', 'if', 'throw', 'delete', 'in', 'try', 'class', 'enum', 'extends', 'super', 'const', 'export', 'import', 'implements', 'let', 'private', 'public', 'yield', 'interface', 'package', 'protected', 'static', 'null', 'true', 'false'

Nogle data indeholder HTML-entiteter for specielle tegn, f.eks. denne beskrivelse fra bibliografien med græske bogstaver: https://andersen.sdu.dk/service/biblio/17779. Man kan føje htmlencode=false til forespørgslen for at få tegnene rent: https://andersen.sdu.dk/service/biblio/17779?htmlencode=false.

htmlencode=false kombineret med JSONP: https://andersen.sdu.dk/service/biblio/17779?callback=return&htmlencode=false.

htmlencode=false er relevant for breve og bibliografi, altså /letters/{brev-ID}, /biblio/{bibliografi-ID} og /biblio/date/{YYYY[-MM[-DD]]}/[language/{sprogkode}].

Standarder

Sprog-koderne følger ISO 639-2/B, med tilføjelsen 'hca' for dansk på H.C. Andersens tid.

Hvordan?

For at få et overblik over strukturen af den enkelte web service anbefaler vi at inspicere output med f.eks. apps eller udvidelser til Google Chrome eller RESTClient til Firefox.

Man kan indlæse JSON fra web servicen v.hj.a. mange forskellige programmeringssprog, bl.a. PHP, C# og JQuery / Javascript.

Simpelt kodeeksempel i PHP

# The service URI. Letters to and from Georg Brandes:
$letters_uri = "https://andersen.sdu.dk/service/letters/person/139";

# Initializes a new session and return a cURL handle
$curl_handle = curl_init($letters_uri);

# Set CURL options: return as string
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);

# Open CURL session:
$json_letters = curl_exec($curl_handle);

# Now that we've got the JSON in $letters, we can close the session and save server resources:
curl_close($curl_handle);

# Decode the JSON. True means into an associative array:
$letters = json_decode($json_letters, true);

# Getting the number of letters. Minus 2, because two rows are taken by meta information. The letters have numeric keys, starting at 0.
$number_of_letters = count($letters);

# Printing number of letters
echo "<p>Der er " . $number_of_letters . " breve fra og til Georg Brandes i HCA-centrets database.</p>";

# create a table. Feel free to create neater HTML:
$table = "";
$tablerows = "";

/**
 * Available array keys and example values:
 *
 * "Date": "1868-04-20",
 * "ID": "23360",
 * "URI": "https://andersen.sdu.dk/service/letters/23360",
 * "Sender name": "H.C. Andersen",
 * "Receiver name": "Georg Brandes",
 * "Sender ID": "1",
 * "Receiver ID": "139",
 * "Sender URI": "https://andersen.sdu.dk/service/people/1",
 * "Receiver URI": "https://andersen.sdu.dk/service/people/139"
 */

# looping through the array of letter data
for($x = 0; $x < $number_of_letters; $x++) {
  $tablerows .= "<tr>";
  $tablerows .= "<td><a href=\"https://andersen.sdu.dk/brevbase/brev.html?bid=" . $letters[$x]["ID"] . "\">" . $letters[$x]["Date"] . "</a></td>";
  $tablerows .= "<td>" . $letters[$x]["Sender name"] . "</td>";
  $tablerows .= "<td>" . $letters[$x]["Receiver name"] . "</td>";
  $tablerows .= "</tr>";
}

$table = "<table class=\"sortTabel\">
<tr><th>Dato</th><th>Afsender</th><th>Modtager</th></tr>
" . $tablerows . "</table>";
echo $table;
?>

Output: