CRUD – Create, Read, Update, Delete

CRUD steht für die Basisfunktionen in Datenbankanwendungen: Das Anlegen neuer Datensätze (Create), das Einlesen (READ) und Ändern (Update) von Datensätzen, und zuguterletzt das Löschen (Delete) von Datensätzen. Die Anwendung im Browser muss sich an den Server wenden, um diese Operationen ausführen zu lassen.

Fetch Head

CRUD – Create, Read, Update, Delete

Die Daten werden z.B. von einer PHP-Anwendung aus einer Datenbank bereitgestellt und heute meist als JSON zwischen Client und Server ausgetauscht. Mit fetch POST, PUT und DELETE wird kein Query-String für die Anfragen gebraucht, sondern die Daten werden im Body der Anfrage übermittelt.

GET-Request

Die einfachste Anfrage nach Informationen aus der Serveranwendung ist der GET-Request. Der fetch-Request braucht nur einen Parameter: die URL der Anwendung.

<button id="getPostsBtn">Alle Autoren auslesen</button>
GET Request an die Server-Anwendung
getPostBtn.addEventListener("click", () => {
	fetch (url).then (function (response) {
		return response.json();
	}).then (function (data) {
		appendData(data);
	}).catch (function (error) {
		console.log ("error: " + error);
	});
});

UPDATE mit Fetch PUT

Um nur bestimmte Daten – z.B. in diesem Beispiel nur einen Datensatz – auszulesen, kann ebenfalls ein GET-Request verwendet werden. GET-Requests ändern Daten nicht. Um Daten gezielt zu verändern oder zu überschreiben, wird ein PUT-Request eingesetzt.

<input id="num" type="number">
<button id="getPostBtn">Einen Autor auslesen</button>

<input id="newFirstname" type="text">
<input id="newLastname" type="text">
<button id="updatePost">Bearbeitung speichern</button>
Element auslesen mit GET, ändern mit PUT

Das Update besteht aus zwei Teilen: Ein GET-Request holt ein individuelles Element mit der ID des Elements in der URL.

getPostBtn.addEventListener("click", () => {
	fetch (`${url}${num.value}`).then (function(response) {
		return response.json();
	}).then (function(data) {
		document.querySelector("#upFirstname").value = data.firstname;
		document.querySelector("#upLastname").value = data.lastname;
		appendSingle(data);
	}).catch (function (error) {
		console.log("error: " + error)
	});
});

PUT überträgt im zweiten Teil den individuellen Datensatz an den Server. Die Alternative wäre PATCH, um nur Teile des Datensatzes effizienter zur Anwendung zu transportieren.

updatePost.addEventListener("click", () => {
	fetch(url, {
		method: "PUT",
		headers: {
			'Content-Type': 'application/json'
		},
		body: JSON.stringify({
			id: parseInt(document.querySelector("#num").value),
			firstname: document.querySelector("#upFirstname").value,
			lastname: document.querySelector("#upLastname").value
		})
	})
	.then(response => response.json())
	.then (data => {
		console.log("update", data);
		append(data);
	})
	.catch(error => console.log("Error:" , error))
})

POST – neues Element erzeugen

POST wird genauso wie PUT im Header des Requests aufgeführt. Die Daten des neuen Elements sitzen im body. Eine ID wird i.d.R. von der Anwendung auf dem Server bzw. beim Eintrag in die Datenbank erzeugt und nicht vom Client.

<input id="firstname" type="text">
<input id="lastname" type="text">
<button id="newPost">Neuer Autor</button>
Neues Element mit POST
newPost.addEventListener("click", () => {
	fetch(url, {
		method: 'POST',
		headers: {
			'Content-Type': 'application/json'
		},
		body: JSON.stringify({
			firstname: document.querySelector("#firstname").value,
			lastname: document.querySelector("#lastname").value
		})
	})
	.then(response => response.json())
	.then(data => {
		console.log(data);
	})
	.catch(error => console.error('Error:', error));
});

DELETE – Element löschen

Für das Löschen eines Datensatzes wird nur seine ID benötigt.

<input id="del" type="number">
<button id="delPost">Autor löschen</button>
Element löschen mit DELETE
delPost.addEventListener("click", () => {
	fetch(url, {
		method: 'DELETE',
		headers: {
			'Content-Type': 'application/json'
		},
		body: JSON.stringify({
			id: document.querySelector("#del").value,
		})
	})
	.then(response => {
		if (response.ok) {
			console.log('Datensatz erfolgreich gelöscht');
		} else {
			console.error('Fehler beim Löschen des Datensatzes');
		}
	})
	.catch(error => console.error('Error:', error));		
})
Suchen auf mediaevent.de