CRUD – Create, Read, Update, Delete

Fetch Head

CRUD – Create, Read, Update, Delete

Das sind die typischen Aufgaben von fetch im REST-API: Daten mit GET auslesen, mit POST Daten zum Server senden, mit PUT Daten ändern und mit DELETE löschen. Die Daten werden z.B. von einer PHP-Anwendung aus einer Datenbank bereitgestellt und immer häufiger 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