Skip to content

Instantly share code, notes, and snippets.

@Abbe98
Last active March 2, 2020 18:45
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Abbe98/f3c5c62f50d691a4c5212e095c037053 to your computer and use it in GitHub Desktop.
Save Abbe98/f3c5c62f50d691a4c5212e095c037053 to your computer and use it in GitHub Desktop.
Detta är ett ganska minimalt exempel på användning av SOCH
// 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