Il DOI (Digital Object Identifier) è un identificatore univoco e permanente utilizzato per identificare risorse digitali come articoli scientifici, dataset e pubblicazioni. Con Node.js, è possibile interfacciarsi con API di registrazione DOI (ad esempio Crossref o DataCite) per creare, aggiornare e gestire questi identificatori. In questo articolo vedremo come generare e gestire un DOI utilizzando Node.js.
Prerequisiti
- Conoscenze di base su Node.js e JavaScript.
- Un account presso un fornitore di DOI (ad esempio DataCite).
- Una chiave API o credenziali per autenticarsi al servizio DOI.
Installazione delle Dipendenze
Iniziamo creando un nuovo progetto Node.js e installando le librerie necessarie per effettuare richieste HTTP, come axios
:
mkdir doi-manager
cd doi-manager
npm init -y
npm install axios
Creare un DOI
Il processo di creazione di un DOI prevede l'invio di una richiesta HTTP all'API del fornitore. Nell'esempio seguente utilizzeremo DataCite. La richiesta include metadati in formato JSON e il DOI desiderato (o lasciato vuoto se si vuole che venga generato automaticamente).
const axios = require('axios');
const DATACITE_API = 'https://api.test.datacite.org/dois';
const API_USERNAME = 'USERNAME';
const API_PASSWORD = 'PASSWORD';
async function createDOI() {
const metadata = {
data: {
type: 'dois',
attributes: {
prefix: '10.1234',
event: 'publish',
url: 'https://esempio.org/risorsa',
titles: [{ title: 'Titolo della risorsa' }],
creators: [{ name: 'Mario Rossi' }],
publisher: 'Editore di Test',
publicationYear: 2025
}
}
};
try {
const response = await axios.post(DATACITE_API, metadata, {
auth: { username: API_USERNAME, password: API_PASSWORD },
headers: { 'Content-Type': 'application/vnd.api+json' }
});
console.log('DOI creato:', response.data.data.id);
} catch (error) {
console.error('Errore durante la creazione del DOI:', error.response?.data || error.message);
}
}
createDOI();
Aggiornare i Metadati di un DOI
Se il DOI è già stato registrato, è possibile aggiornare i suoi metadati effettuando una richiesta PUT
all'endpoint corrispondente:
async function updateDOI(doi) {
const updatedMetadata = {
data: {
id: doi,
type: 'dois',
attributes: {
titles: [{ title: 'Titolo Aggiornato della Risorsa' }]
}
}
};
try {
const response = await axios.put(`${DATACITE_API}/${doi}`, updatedMetadata, {
auth: { username: API_USERNAME, password: API_PASSWORD },
headers: { 'Content-Type': 'application/vnd.api+json' }
});
console.log('DOI aggiornato:', response.data.data.id);
} catch (error) {
console.error('Errore durante l\'aggiornamento del DOI:', error.response?.data || error.message);
}
}
updateDOI('10.1234/abcd1234');
Conclusioni
Con Node.js e librerie come axios
, è relativamente semplice interagire con le API di registrazione DOI. È fondamentale assicurarsi di utilizzare ambienti di test (come api.test.datacite.org
) prima di registrare DOI reali, e di rispettare i requisiti di metadati imposti dal provider scelto.