Page History
Kansalliskirjastossa on kehitetty oma REST-rajapinta (SimpleREST), jolla Rest-rajapinnalla pääsee käsiksi ja muokkaamaan kaikkia Dspacen resursseja, kuten kokoelmia, tietueita ja käyttäjiä. SimpleRestistä ei ole julkista dokumentaatiota saatavilla, mutta asiakaskohtaisesti voidaan neuvotella SimpleRestin käytöstä, jos se katsotaan tarpeelliseksi. Lähinnä käyttö koskee tällöin tietueiden sisäänvientiä sekä niiden muokkausta.tiedostoja. Rajapinta tukee myös Dspacen omaa autentikointia, joten Restin kautta käyttäjällä on samat oikeudet resursseihin, kuin käyttöliittymänkin kautta.
DSpace 5.6 REST
Viralliset ohjeet löytyvät täältä. Virallisista ohjeista n Alle päivitetään käytännön esimerkkejä.
DSpace Rest Tokenin Hakeminen
Pyyntö osoitteeseen POST /rest/login, json payload:
Code Block language js {"email": "[email protected]", "password": "1234"}
Esimerkkivastaus:
Code Block 8a5bd933-e679-4ad3-8b5a-dd2a77941bff
Vastauksena saatu token pitää sisällyttää rest-dspace-token headeriin, kun tekee lisäys-/poisto-/muokkausoperaatioita.
Itemin lisääminen (embargolla tai ilman)
Note |
---|
Restin kautta embargo voidaan määritellä vain Dspacen omalla embargomekanismilla, jonka tarkkuus on vuorokausi. Siihen ei myöskään liity URN-pikarekisteröintiä. |
Luo item: (rest osoite: POST /rest/collections/1/items) headerit:
Code Block rest-dspace-token: 8a5bd933-e679-4ad3-8b5a-dd2a77941bff Accept: application/json
json payload:
Code Block language js {"name": "EmbargoTesti", "metadata": [ {"key": "dc.title", "value": "EmbargoTesti"}, {"key": "dc.embargo.terms", "value": "2017-10-19"} ]}
Esimerkkivastaus:
Code Block language js { "id": 224, "name": "EmbargoTesti", "handle": null, "type": "item", "link": "/rest/items/224", "expand": [ "metadata", "parentCollection", "parentCollectionList", "parentCommunityList", "bitstreams", "all" ], "lastModified": "2017-10-18 14:52:17.299", "parentCollection": null, "parentCollectionList": null, "parentCommunityList": null, "bitstreams": null, "archived": "false", "withdrawn": "false" }
Luo bitstream: (rest osoite POST /rest/items/{itemId}/bitstreams?name=my_testi4.pdf&description=testitiedosto, jos haluat embargon, niin POST /rest/items/{itemId}/bitstreams?name=my_testi4.pdf&description=testitiedosto&groupId=0&year=2017&month=10&day=19) itemId saadaan edellisen pyynnön json vastauksesta. Tiedoston parametri nimeksi pitää asettaa "file" ja se lähetetään form-datana.
Code Block | ||
---|---|---|
| ||
curl --location --request POST 'https://doria.fi/rest/login' --header 'Content-Type: application/json' --data-raw '{"email":"user_email_here","password":"password_here"}'
curl --location --request POST 'https://doria.fi/rest/items/ITEM_ID_HERE/bitstreams?name=FILE_NAME_HERE' --header 'rest-dspace-token: TOKEN_HERE --header 'Content-Type: multipart/form-data' -F 'file=@FILE_PATH_HERE' |
Code Block | ||
---|---|---|
| ||
import requests
url = julkaisuarkiston rest-endpoint tähän, esim. https://www.doria.fi/rest
#Kirjaudutaan sisään:
r = requests.post(url + '/login', headers=headers, data = '{"email": "' + username + '", "password": "' + password + '"}', verify=False)
headers = {"Accept": "application/json'"}
#Lisätään token headeriin:
headers['rest-dspace-token'] = r.text
#Avataan lähetettävä tiedosto:
files = {'file': open(filedir + "/" + fname[1:-1], 'rb')}
#Lähetetään tiedosto Restillä:
response = requests.post(url + '/items/' + item_id_tähän + '/bitstreams?name=' + tiedoston_nimi_tähän + '&description=' + tiedoston_kuvailuteksti_tähän, files=files, headers=headers) |
Esimerkkivastaus:
Code Block | ||
---|---|---|
| ||
{
"id": 76,
"name": "my_testi4.pdf",
"handle": null,
"type": "bitstream",
"link": "/rest/bitstreams/76",
"expand": [ "parent", "policies", "all" ],
"bundleName": "ORIGINAL",
"description": "testitiedosto",
"format": "Adobe PDF",
"mimeType": "application/pdf",
"sizeBytes": 741609,
"parentObject": null,
"retrieveLink": "/bitstreams/76/retrieve",
"checkSum": {
"value": "b2a29cd63a82bc03583d2562b0ac4b3c",
"checkSumAlgorithm": "MD5"
},
"sequenceId": -1,
"policies": null
} |
- Nyt Item on luotu ja bitstream on lisätty.
Itemin metadatan päivittäminen
- Päivitä item: (rest osoite PUT /rest/items/{item_id}/metadata)
headerit:
Code Block rest-dspace-token: 8a5bd933-e679-4ad3-8b5a-dd2a77941bff Accept: application/json
json payload:
Code Block [{ "key": "dc.title", "value": "New Title", "language": "en" }]