Last active
March 2, 2020 18:45
-
-
Save Abbe98/f3c5c62f50d691a4c5212e095c037053 to your computer and use it in GitHub Desktop.
Detta är ett ganska minimalt exempel på användning av SOCH
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Detta är ett ganska minimalt exempel på användning av SOCH | |
// Notera att det saknas felhantering vid HTTP fel | |
// Notera även att sochSearch() inte stödjer paginering och att den använder presentationsformatet | |
// Det går att klistra in detta exempel direkt i webbläsarens konsol | |
// Det går inte att göra frågor från andra HTTPS resurser | |
// hjälp funktion för att göra http frågor och parsa JSON | |
const fetchSoch = async (url) => await (await fetch(url, { headers: new Headers({ 'Accept': 'application/json' }) })).json(); | |
// funktion för att göra en enkel sökning | |
const sochSearch = async (query) => { | |
const json = await fetchSoch(`http://kulturarvsdata.se/ksamsok/api?method=search&query=${query}&recordSchema=presentation`); | |
return json.result.records.record.map(r => r['pres:item']); | |
} | |
// Hämta ett object via en URI (JSON-LD) | |
fetchSoch('http://kulturarvsdata.se/raa/bbrp/21620000011565').then(data => { | |
// snyggt fint JavaScript object | |
console.log(data); | |
}).catch(reason => { | |
// nätverksfel av någon typ | |
console.error(reason.message); | |
}); | |
// genomför en sökning efter "runsten" | |
// här kan du också skriva CQL frågor (item="sten yxa" AND place=gotland) | |
sochSearch('runsten').then(data => { | |
// loopa igenom snygg fin JavaScript array med listade object | |
data.forEach(record => { | |
// logga objekt | |
console.log(record); | |
// skriv ut specifikt element ur objektet | |
//console.log(record['pres:dataQuality']); | |
// skriv ut specifikt element till HTML | |
// document.querySelector('#elementId').innerText = record['pres:itemLabel']; | |
}); | |
}).catch(reason => { | |
// nätverksfel av någon typ | |
console.error(reason.message); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment