Quickstarters
Feature Overview
Wie man ein Backend für Kotlin aufbaut?
39 min
einführung in diesem tutorial lernen sie, wie sie ein vollständiges backend für eine android anwendung (geschrieben in kotlin) mit back4app erstellen wir werden die integration wesentlicher back4app funktionen durchgehen – einschließlich datenbankverwaltung, cloud code funktionen, rest und graphql apis, benutzerauthentifizierung und echtzeitanfragen (live queries) – um ein sicheres, skalierbares und robustes backend zu erstellen, das nahtlos mit ihrer android app kommuniziert sie werden auch sehen, wie die schnelle einrichtung und die intuitive umgebung von back4app die zeit und den aufwand im vergleich zur manuellen konfiguration von servern und datenbanken drastisch reduzieren können unterwegs werden sie praktische erfahrungen mit wichtigen funktionen sammeln, einschließlich fortschrittlicher sicherheitsfunktionen, der planung von aufgaben mit cloud jobs und der einrichtung von webhooks für externe integrationen am ende dieses tutorials sind sie gut vorbereitet, um dieses grundlegende setup in eine produktionsbereite anwendung zu erweitern oder bei bedarf benutzerdefinierte logik und drittanbieter apis einfach zu integrieren voraussetzungen um dieses tutorial abzuschließen, benötigen sie ein back4app konto und ein neues back4app projekt erste schritte mit back4app https //www back4app com/docs/get started/new parse app wenn sie kein konto haben, können sie eines kostenlos erstellen folgen sie der obigen anleitung, um ihr projekt vorzubereiten grundlegende android/kotlin entwicklungsumgebung stellen sie sicher, dass sie android studio auf ihrem computer installiert haben sie können die offiziellen einrichtungsdokumente von android studio https //developer android com/studio befolgen, wenn sie es noch nicht eingerichtet haben mindestens android 4 0 oder höher in der gradle konfiguration ihrer app typischerweise setzen sie dies in ihrer minsdkversion in der build gradle ihrer module vertrautheit mit kotlin und grundlegenden android konzepten android entwicklerdokumente https //developer android com/docs wenn sie neu in android oder kotlin sind, überprüfen sie die offiziellen dokumente oder ein tutorial für anfänger, bevor sie beginnen stellen sie sicher, dass sie alle diese voraussetzungen erfüllt haben, bevor sie beginnen ihr back4app projekt einzurichten und ihre lokale android umgebung vorzubereiten, wird ihnen helfen, leichter folgen zu können schritt 1 – einrichten des back4app projekts ein neues projekt erstellen der erste schritt beim erstellen ihres android backends auf back4app besteht darin, ein neues projekt zu erstellen wenn sie noch keines erstellt haben, folgen sie diesen schritten melden sie sich bei ihrem back4app konto an klicken sie auf die schaltfläche „neue app“ in ihrem back4app dashboard geben sie ihrer app einen namen (z b „android kotlin backend tutorial“) sobald das projekt erstellt ist, sehen sie es in ihrem back4app dashboard aufgelistet dieses projekt wird die grundlage für alle backend konfigurationen sein, die in diesem tutorial besprochen werden verbinden sie das parse sdk back4app verlässt sich auf die parse plattform, um ihre daten zu verwalten, echtzeitfunktionen bereitzustellen, die benutzerauthentifizierung zu handhaben und mehr die integration ihrer android app mit back4app umfasst das hinzufügen der parse android sdk abhängigkeiten zu ihren gradle dateien und deren initialisierung mit anmeldeinformationen von ihrem back4app dashboard rufen sie ihre parse schlüssel ab navigieren sie in ihrem back4app dashboard zu den „app einstellungen“ oder dem abschnitt „sicherheit & schlüssel“, um ihre anwendungs id und client schlüssel sie finden auch die parse server url (häufig im format https //parseapi back4app com ) fügen sie das parse sdk zu ihren build gradle dateien hinzu in ihrer root build gradle (projekt ebene) allprojects { repositories { maven { url "https //jitpack io" } } } in ihrer modul ebene build gradle (normalerweise app/build gradle ) dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } initialisieren sie parse in ihrer android anwendung erstellen sie eine benutzerdefinierte application klasse (z b app kt ), wenn sie noch keine haben package com example app import android app application import com parse parse import com parse parseinstallation class app application() { override fun oncreate() { super oncreate() // initialize parse parse initialize( parse configuration builder(this) applicationid("your app id") // from back4app dashboard clientkey("your client key") // from back4app dashboard server("https //parseapi back4app com/") build() ) // (optional) track statistics around app opens parseinstallation getcurrentinstallation() saveinbackground() } } öffnen sie als nächstes ihre androidmanifest xml und registrieren sie die benutzerdefinierte application klasse \<?xml version="1 0" encoding="utf 8"?> \<manifest xmlns\ android="http //schemas android com/apk/res/android" package="com example app"> \<application android\ name=" app" android\ icon="@mipmap/ic launcher" android\ label="@string/app name" android\ usescleartexttraffic="true" > \</application> \</manifest> durch das abschließen dieses schrittes haben sie eine sichere verbindung zwischen ihrem android (kotlin) frontend und dem back4app backend hergestellt alle anfragen und datenübertragungen werden sicher über dieses sdk geleitet, wodurch die komplexität manueller rest oder graphql aufrufe verringert wird (obwohl sie diese bei bedarf weiterhin verwenden können) schritt 2 – datenbank einrichten daten speichern und abfragen mit ihrem back4app projekt, das eingerichtet und das parse sdk in ihre android app integriert ist, können sie nun daten speichern und abrufen im folgenden finden sie ein beispiel, das kotlin verwendet, um daten zu erstellen und abzurufen import com parse parseobject import com parse parsequery import com parse savecallback import com parse parseexception // example create a todo item fun createtodoitem(title string, iscompleted boolean) { val todo = parseobject("todo") todo put("title", title) todo put("iscompleted", iscompleted) todo saveinbackground { e parseexception? > if (e == null) { println("todo saved successfully") } else { println("error saving todo ${e localizedmessage}") } } } // example query all todo items fun fetchtodos() { val query = parsequery\<parseobject>("todo") query findinbackground { results, e > if (e == null) { println("fetched todo items ${results size}") } else { println("error fetching todos ${e localizedmessage}") } } } alternativ können sie die rest api endpunkte von back4app verwenden curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo back4app bietet auch eine graphql schnittstelle mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } diese vielfältigen optionen ermöglichen es ihnen, datenoperationen auf die weise zu integrieren, die am besten zu ihrem entwicklungsprozess passt – sei es über das parse sdk, rest oder graphql schema design und datentypen standardmäßig erlaubt parse schemaerstellung on the fly , aber sie können auch ihre klassen und datentypen im back4app dashboard definieren, um mehr kontrolle zu haben navigieren sie zum abschnitt “datenbank” in ihrem back4app dashboard erstellen sie eine neue klasse (z b “todo”) und fügen sie relevante spalten hinzu, wie titel (string) und iscompleted (boolean) back4app bietet einen ki agenten, der ihnen helfen kann, ihr datenmodell zu entwerfen öffnen sie den ki agenten von ihrem app dashboard oder im menü beschreiben sie ihr datenmodell in einfacher sprache (z b “bitte erstellen sie eine neue todo app bei back4app mit einem vollständigen klassenschema ”) lassen sie den ki agenten das schema für sie erstellen die verwendung des ki agenten kann ihnen zeit sparen, wenn sie ihre datenarchitektur einrichten, und die konsistenz in ihrer anwendung sicherstellen relationale daten wenn sie relationale daten haben—sagen wir, ein category objekt, das auf mehrere todo elemente verweist—können sie pointers oder relations in parse verwenden zum beispiel, um einen zeiger auf eine category // linking a todo to a category with a pointer fun createtaskforcategory(categoryobjectid string, title string) { val todo = parseobject("todo") val categorypointer = parseobject("category") categorypointer objectid = categoryobjectid todo put("title", title) todo put("category", categorypointer) todo saveinbackground { e > if (e == null) { println("created task with category relationship") } else { println("error creating task ${e localizedmessage}") } } } wenn sie abfragen, können sie auch zeiger daten einbeziehen val query = parsequery getquery\<parseobject>("todo") query include("category") query findinbackground { todos, e > if (e == null) { println("fetched ${todos size} todos with category data") } } dieser include("category") aufruf ruft die kategoriedetails zusammen mit jedem todo ab, wodurch ihre relationalen daten nahtlos zugänglich werden echtzeitabfragen für echtzeit updates bietet back4app live queries sie können änderungen in einer bestimmten klasse von ihrer android app abonnieren aktivieren sie live queries in ihrem back4app dashboard unter den servereinstellungen initialisieren sie ein live query abonnement in ihrem code import com parse parselivequeryclient import com parse parsequery import com parse subscriptionhandling val parselivequeryclient = parselivequeryclient factory getclient() val parsequery = parsequery\<parseobject>("todo") val subscriptionhandling subscriptionhandling\<parseobject> = parselivequeryclient subscribe(parsequery) subscriptionhandling handleevent(subscriptionhandling event create) { querytodo, todo > println("new todo created ${todo getstring("title")}") } subscriptionhandling handleevent(subscriptionhandling event update) { querytodo, todo > println("todo updated ${todo getstring("title")}") } subscriptionhandling handleevent(subscriptionhandling event delete) { querytodo, todo > println("todo deleted ${todo getstring("title")}") } immer wenn ein neues todo erstellt, aktualisiert oder gelöscht wird, erhält der client in echtzeit einen callback – perfekt für kollaborative oder dynamische apps schritt 3 – anwendung von sicherheit mit acls und clps back4app sicherheitsmechanismus back4app nimmt sicherheit ernst, indem es zugriffskontrolllisten (acls) und klassenebene berechtigungen (clps) diese funktionen ermöglichen es ihnen, einzuschränken, wer daten auf objekt oder klassenbasis lesen oder schreiben kann, und stellen sicher, dass nur autorisierte benutzer ihre daten ändern können zugriffskontrolllisten (acls) eine acl wird auf einzelne objekte angewendet, um zu bestimmen, welche benutzer, rollen oder die öffentlichkeit lese /schreiboperationen durchführen können zum beispiel fun createprivatetodo(title string, owneruser parseobject) { val todo = parseobject("todo") todo put("title", title) // create an acl granting read/write access only to the owner val acl = com parse parseacl(owneruser) acl publicreadaccess = false acl publicwriteaccess = false todo acl = acl todo saveinbackground { e > if (e == null) { println("saved private todo") } else { println("error ${e localizedmessage}") } } } klassenebene berechtigungen (clps) clps regeln die standardberechtigungen einer gesamten klasse, wie z b ob die klasse öffentlich lesbar oder schreibbar ist gehen sie zu ihrem back4app dashboard , wählen sie ihre app aus und öffnen sie den datenbank bereich wählen sie eine klasse aus (z b „todo“) öffnen sie die klassenebene berechtigungen registerkarte konfigurieren sie ihre standardwerte, wie „benötigt authentifizierung“ für lesen oder schreiben oder „kein zugriff“ für die öffentlichkeit schritt 4 – schreiben von cloud code funktionen cloud code ermöglicht es ihnen, benutzerdefinierten kotlin ähnlichen javascript code auf dem parse server auszuführen (hochgeladen als js dateien), ohne die serverinfrastruktur verwalten zu müssen dies ist ideal für geschäftslogik, validierungen, trigger und externe api aufrufe wie es funktioniert sie platzieren typischerweise javascript funktionen, trigger und alle erforderlichen npm module in einer main js datei diese datei wird in ihrem back4app projekt bereitgestellt und läuft in der parse server umgebung typische anwendungsfälle geschäftslogik datenvalidierungen trigger (wie beforesave , aftersave ) sicherheitsdurchsetzung integrationen mit drittanbieter apis ihre funktion bereitstellen unten ist eine einfache cloud code funktion main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); bereitstellung über die https //www back4app com/docs/local development/parse cli # for linux/mac curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash \# for windows, download the exe from the releases page konfigurieren und bereitstellen b4a configure accountkey b4a deploy rufen sie ihre funktion auf von ihrem android (kotlin) code über das parse sdk import com parse parsecloud import com parse functioncallback import com parse parseexception fun calltextlengthfunction(sometext string) { val params = hashmapof("text" to sometext) parsecloud callfunctioninbackground\<map\<string, any>>("calculatetextlength", params) { result, e > if (e == null) { val length = result\["length"] as int println("text length $length") } else { println("error calling cloud code ${e localizedmessage}") } } } sie können es auch über rest oder graphql auf ähnliche weise aufrufen schritt 5 – authentifizierung konfigurieren benutzerauthentifizierung in back4app back4app nutzt die parse user klasse zur authentifizierung parse kümmert sich um sichere passwort hashing, sitzungstoken und mehr von haus aus einrichten der benutzerauthentifizierung in kotlin können sie einen neuen benutzer erstellen import com parse parseuser fun signupuser(username string, password string, email string) { val user = parseuser() user username = username user setpassword(password) user email = email user signupinbackground { e > if (e == null) { println("user signed up successfully!") } else { println("error signing up user ${e localizedmessage}") } } } melden sie einen bestehenden benutzer an fun loginuser(username string, password string) { parseuser logininbackground(username, password) { user, e > if (user != null && e == null) { println("user logged in ${user username}") } else { println("error logging in ${e? localizedmessage}") } } } soziale logins wie google, facebook und apple können ebenfalls integriert werden überprüfen sie die dokumentation zu sozialen logins https //www back4app com/docs/platform/sign in with apple für details sitzungsverwaltung parse verwaltet automatisch sitzungstoken sie können auf den aktuellen benutzer zugreifen val currentuser = parseuser getcurrentuser() if (currentuser != null) { println("currently logged in user ${currentuser username}") } else { println("no user is logged in") } und abmelden parseuser logout() schritt 6 – umgang mit dateispeicherung hochladen und abrufen von dateien parse enthält die parsefile klasse zum verarbeiten von datei uploads import com parse parsefile import com parse parseexception fun uploadimage(file java io file) { val bytes = file readbytes() val parsefile = parsefile(file name, bytes) parsefile saveinbackground { e parseexception? > if (e == null) { println("file saved ${parsefile url}") } else { println("error uploading file ${e localizedmessage}") } } } dateisicherheit sie können steuern, wer dateien hochladen oder herunterladen kann, indem sie acls und clps anpassen oder dateispezifische einstellungen in der parse server konfiguration verwenden schritt 7 – e mail verifizierung und passwortzurücksetzung aktivieren sie die e mail verifizierung in ihren back4app dashboard einstellungen konfigurieren sie ihre absenderadresse, e mail vorlagen oder benutzerdefinierte domain, falls gewünscht verwenden sie parseuser requestpasswordresetinbackground(email, callback) um einen passwortzurücksetzungsprozess in ihrer app auszulösen schritt 8 – aufgabenplanung mit cloud jobs cloud jobs ermöglichen es ihnen, routineaufgaben wie das bereinigen von daten oder das senden von regelmäßigen benachrichtigungen zu automatisieren parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo') const query = new parse query(todo) // e g , remove todos older than 30 days const cutoff = new date(date now() 30 24 60 60 1000) query lessthan('createdat', cutoff) const oldtodos = await query find({ usemasterkey true }) await parse object destroyall(oldtodos, { usemasterkey true }) return `deleted ${oldtodos length} old todos ` }) planen sie den job in ihrem back4app dashboard unter servereinstellungen > hintergrundjobs schritt 9 – integration von webhooks webhooks ermöglichen es ihrer back4app app, http anfragen an einen externen dienst zu senden, wann immer bestimmte ereignisse auftreten fügen sie einen webhook hinzu in ihrem back4app dashboard unter mehr > webhooks trigger konfigurieren (z b nach dem speichern eines neuen objekts) fügen sie einen url endpunkt hinzu (wie einen slack oder stripe webhook) schritt 10 – erkundung des back4app admin panels die back4app admin app ist eine benutzerfreundliche webbasierte schnittstelle für nicht technische benutzer zur verwaltung von daten aktivieren sie es unter app dashboard > mehr > admin app erstellen sie ihren ersten admin benutzer wählen sie eine subdomain aus, um auf das admin panel zuzugreifen einloggen um datensätze aus ihrer datenbank einfach anzuzeigen, zu bearbeiten oder zu entfernen fazit durch das befolgen dieses umfassenden tutorials haben sie ein sicheres backend für eine android app auf back4app erstellt eine datenbank mit klassenschemas, datentypen und beziehungen konfiguriert echtzeitabfragen (live queries) für sofortige datenaktualisierungen integriert sicherheitsmaßnahmen mit acls und clps angewendet, um den datenzugriff zu schützen und zu verwalten cloud code funktionen implementiert, um benutzerdefinierte geschäftslogik auf der serverseite auszuführen benutzerauthentifizierung mit unterstützung für e mail verifizierung und passwortzurücksetzungen eingerichtet datei uploads und abrufe verwaltet, mit optionalen sicherheitskontrollen für dateien cloud jobs für automatisierte hintergrundaufgaben geplant webhooks verwendet, um mit externen diensten zu integrieren das back4app admin panel für die datenverwaltung erkundet mit einem soliden android (kotlin) frontend und einem robusten back4app backend sind sie nun gut gerüstet, um funktionsreiche, skalierbare und sichere anwendungen zu entwickeln setzen sie ihre erkundung fort, integrieren sie ihre geschäftslogik und nutzen sie die leistungsfähigkeit von back4app, um ihnen unzählige stunden in der server und datenbankverwaltung zu sparen viel spaß beim programmieren! nächste schritte erstellen sie eine produktionsbereite android app durch die erweiterung dieses backends, um komplexere datenmodelle, caching strategien und leistungsoptimierungen zu handhaben integrieren sie erweiterte funktionen wie spezialisierte authentifizierungsabläufe, rollenbasierte zugriffskontrolle oder externe apis (wie zahlungs gateways) sehen sie sich die offizielle dokumentation von back4app an für tiefere einblicke in erweiterte sicherheit, leistungsoptimierung und protokollanalyse erforschen sie andere tutorials zu echtzeit chat anwendungen, iot dashboards oder standortbasierten diensten sie können die hier erlernten techniken mit drittanbieter apis kombinieren, um komplexe, reale anwendungen zu erstellen