Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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ätiedostoja. Rajapinta tukee myös Dspacen omaa autentikointia. 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 syöttöä sekä niiden päivittämistä.Muutama vuosi SimpleRestin valmistumisen jälkeen Dspaceen on toteutettu myös sen oma, virallinen REST-rajapinta. Rajapinnasta puuttui aluksi tietojen syöttö- ja päivitystoiminnot, mutta ne on jälkeenpäin toteutettu, ja rajapinta on toiminnoiltaan nyt hyvällä tasolla. Kun rajapinnasta saadaan enemmän kokemuksia maailmalla ja se on osoittautunut ongelmattomaksi, alamme suosittelemaan sen käyttöä asiakkaillemme. Toistaiseksi käytämme kuitenkin SimpleRestiä, jossa on ollut syöttö- ja päivitystoiminnot käytössä useamman vuoden ja joka on todettu vakaaksi ja toimivaksi, 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ä.

...

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
    languagejs
    {"name": "EmbargoTesti", "metadata": [
    	{"key": "dc.title", "value": "EmbargoTesti"},
    	{"key": "dc.embargo.terms", "value": "2017-10-19"}
    ]}
    
    

    Esimerkkivastaus: 

    Code Block
    languagejs
    {
    	"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.

Esimerkki tiedoston lähettämisestä form-datana Pythonin Requests-moduulin avulla


Code Block
titlePython esimerkki
url=julkaisuarksiton rest-endpoint, 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/' + itemin_tietokanta_id + '/bitstreams?name=' + tiedoston_nimi_tähän + '&description=' + tiedoston_kuvailuteksti_tähän, files=files, headers=headers)


Esimerkkivastaus:

Code Block
languagejs
{ 
	"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.

...