Quickstarters
Feature Overview
Wie man ein Backend für Elixir erstellt?
40 min
einführung in diesem tutorial lernen sie wie man ein backend für elixir mit back4app erstellt wir werden die integration wesentlicher back4app funktionen durchgehen – wie datenbankverwaltung, cloud code funktionen, rest und graphql apis, benutzerauthentifizierung und echtzeitanfragen (live queries) – um ein sicheres, skalierbares und robustes backend zu erstellen elixir, das auf der erlang vm (beam) läuft und otp (erlang otp) nutzt, ist bekannt für seine fehlertolerante, nebenläufige umgebung, die gut mit back4app harmoniert, um eine moderne, leistungsstarke infrastruktur zu bilden sie werden sehen, wie die schnelle einrichtung und die intuitive umgebung von back4app ihre zeit und mühe im vergleich zur manuellen konfiguration von servern und datenbanken drastisch reduzieren können dies umfasst die nutzung von pattern matching sowie die anbindung an das bevorzugte web framework von elixir am ende dieses tutorials haben sie eine solide grundlage, die sie in eine produktionsbereite anwendung erweitern oder mit benutzerdefinierter logik und drittanbieter apis verbessern können 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 befolgen sie die obige anleitung, um ihr projekt vorzubereiten grundlegende elixir entwicklungsumgebung stellen sie sicher, dass elixir auf ihrem computer installiert ist wenn sie ein web framework wie phoenix verwenden möchten, siehe die phoenix installationsanleitung https //hexdocs pm/phoenix/installation html zur referenz vertrautheit mit elixir konzepten offizielle elixir dokumentation https //elixir lang org/docs html wenn sie neu in elixir sind, überprüfen sie diese ressourcen 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 eingerichtet und ihre lokale elixir umgebung bereit zu haben, wird ihnen helfen, reibungsloser zu folgen schritt 1 – erstellen eines neuen projekts auf back4app und verbindung ein neues projekt erstellen der erste schritt in wie man ein backend für elixir auf back4app erstellt, besteht darin, ein neues projekt zu erstellen wenn sie noch keines erstellt haben, befolgen sie diese schritte 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 „elixir 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 verbindung über rest oder graphql back4app verwendet die parse plattform als grundlage für elixir gibt es derzeit kein offizielles parse sdk stattdessen können sie sich einfach über die rest oder graphql apis mit back4app verbinden in ihrem elixir projekt werden sie ihre anwendungs id und rest oder graphql schlüssel aus den „app einstellungen“ oder dem abschnitt „sicherheit & schlüssel“ im back4app dashboard abrufen http anfragen mit einer elixir bibliothek wie httpoison https //hex pm/packages/httpoison oder tesla https //hex pm/packages/tesla konfigurieren zum beispiel, um anmeldeinformationen in einer konfigurationsdatei zu speichern ( config/dev exs oder ähnlich) config \ my app, \ b4a, app id "your application id", rest key "your rest api key", server url "https //parseapi back4app com" sie können diese anmeldeinformationen dann in ihrem code verwenden, um rest anfragen zu stellen in diesem leitfaden zeigen wir, wie man mit der back4app datenbank, dem benutzersystem und anderen funktionen über standardmäßige http oder graphql anfragen interagiert schritt 2 – datenbank einrichten erstellen eines datenmodells in back4app werden daten in klassen sie können eine neue klasse im back4app dashboard erstellen 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) erstellen eines datenmodells mit dem ki agenten back4app bietet auch einen ki agenten, der ihnen hilft, ihr datenmodell zu beschreiben und zu erstellen öffnen sie den ki agenten von ihrem app dashboard oder dem menü beschreiben sie ihr datenmodell in einfacher sprache (z b “bitte erstellen sie eine neue todo app mit einem vollständigen klassenschema ”) lassen sie den ki agenten das schema automatisch erstellen daten lesen und schreiben mit sdk (falls zutreffend) da elixir kein offizielles parse sdk hat, überspringen wir die direkte sdk nutzung stattdessen zeigen wir rest , graphql , und live queries ansätze unten daten lesen und schreiben mit rest api installieren sie einen http client wie httpoison in ihrer mix exs defp deps do \[ {\ httpoison, " > 1 8"} ] end führen sie dann mix deps get aus um ein todo objekt aus ihrer elixir anwendung zu erstellen (zu speichern) defmodule myapp todo do @moduledoc false require logger alias myapp config def create todo(title, is completed) do url = config server url() <> "/classes/todo" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{"title" => title, "iscompleted" => is completed}) case httpoison post(url, body, headers) do {\ ok, %httpoison response{status code 201, body resp body}} > logger info("todo created #{resp body}") {\ ok, resp body} {\ ok, %httpoison response{status code status, body error body}} > logger error("error creating todo (#{status}) #{error body}") {\ error, error body} {\ error, error} > logger error("http error #{inspect(error)}") {\ error, error} end end end und um ihre todo objekte abzufragen def fetch todos() do url = config server url() <> "/classes/todo" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()} ] httpoison get(url, headers) end daten lesen und schreiben mit der graphql api sie können auch über graphql interagieren zum beispiel, um ein todo zu erstellen mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } in elixir könnten sie dies auch mit einem http client senden graph query = """ mutation { createtodo(input { fields { title "new from graphql", iscompleted false } }) { todo { objectid title } } } """ url = config server url() <> "/graphql" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] httpoison post(url, jason encode!(%{"query" => graph query}), headers) arbeiten mit live abfragen (optional) für echtzeit updates bietet back4app live abfragen sie können live abfragen in den servereinstellungen ihrer app aktivieren da es derzeit keine native elixir parse client bibliothek gibt, würden sie typischerweise über einen phoenix kanal oder einen benutzerdefinierten websocket client mit dem bereitgestellten wss\ //your subdomain here b4a io endpunkt verbinden dies kann fortgeschrittener sein und erfordert benutzerdefiniertes codieren, um abonnements, nachrichten usw zu verwalten schritt 3 – anwendung von sicherheit mit acls und clps kurzer überblick back4app bietet zugriffskontrolllisten (acls) und klassenebene berechtigungen (clps) an, um den datenzugriff zu schützen und zu verwalten acls gelten für einzelne objekte, während clps für die gesamte klasse gelten schritt für schritt klassenebene berechtigungen (clps) in ihrem back4app dashboard, unter datenbank , wählen sie eine klasse (z b „todo“) und öffnen sie die klassenebene berechtigungen registerkarte passen sie die einstellungen an (z b „erfordert authentifizierung“ oder „kein zugriff“ für die öffentlichkeit) acls konfigurieren beim erstellen oder aktualisieren eines objekts können sie acl daten in ihrer rest oder graphql anfrage senden geben sie beispielsweise das acl feld in json an, wenn sie eine feingranulare kontrolle pro objekt benötigen für weitere informationen besuchen sie die app sicherheitsrichtlinien https //www back4app com/docs/security/parse security schritt 4 – schreiben von cloud code funktionen warum cloud code cloud code ermöglicht es ihnen, serverseitige logik auszuführen, ohne ihre eigenen server verwalten zu müssen mit elixir verlassen sie sich normalerweise auf otp für die parallelität, aber hier können sie einfach javascript cloud code in back4app erstellen, um validierung, trigger oder benutzerdefinierte geschäftslogik zu handhaben dieser code läuft auf dem parse server, sodass sie ihren elixir code auf client oder mikrodienstaufgaben konzentrieren können, während die schwere arbeit im cloud code erfolgt beispiel funktion in ihrer main js im back4app dashboard oder über die cli // 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 bereitstellen über die back4app cli https //www back4app com/docs/local development/parse cli oder indem sie in das dashboard unter cloud code > funktionen einfügen und auf bereitstellen klicken cloud code aufrufen von elixir aus könnten sie verwenden defmodule myapp cloudfunctions do alias myapp config def calculate text length(text) do url = config server url() <> "/functions/calculatetextlength" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{text text}) httpoison post(url, body, headers) end end schritt 5 – authentifizierung konfigurieren authentifizierung aktivieren oder einrichten back4app verwendet die parse user klasse zur authentifizierung sie können die registrierung, den login und die passwortzurücksetzungen einfach verwalten von elixir aus verwenden sie typischerweise rest aufrufe defmodule myapp auth do alias myapp config def sign up user(username, password, email) do url = config server url() <> "/users" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{ username username, password password, email email }) httpoison post(url, body, headers) end def log in user(username, password) do url = config server url() <> "/login?username=#{username}\&password=#{password}" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()} ] httpoison get(url, headers) end end soziale anmeldung back4app unterstützt die integration mit google, apple, facebook und mehr in den meisten fällen leiten sie die benutzer zum oauth fluss und verwenden dann die von diesen anbietern zurückgegebenen tokens, um die parse anmeldung abzuschließen siehe dokumentation zur sozialen anmeldung https //www back4app com/docs/platform/sign in with apple für details schritt 6 – umgang mit dateispeicherung einrichtung der dateispeicherung back4app speichert dateien sicher von elixir aus laden sie dateien über rest hoch defmodule myapp filestorage do alias myapp config require logger def upload file(file path) do file name = path basename(file path) url = config server url() <> "/files/#{file name}" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/octet stream"} ] body = file read!(file path) case httpoison post(url, body, headers) do {\ ok, %httpoison response{status code 201, body resp body}} > logger info("file uploaded #{resp body}") {\ ok, resp body} error > logger error("error uploading file #{inspect(error)}") error end end end sie erhalten eine json antwort mit der datei url, die sie in einer klasse (z b foto ) zur referenz speichern können sicherheitsüberlegungen sie können konfigurieren, wer dateien in den fileupload einstellungen ihres back4app projekts hochladen kann, und die uploads auf authentifizierte benutzer beschränken, wenn gewünscht schritt 7 – e mail verifizierung und passwortzurücksetzung übersicht die e mail verifizierung stellt sicher, dass die benutzer die während der anmeldung verwendete e mail adresse besitzen die passwortzurücksetzung ermöglicht es ihnen, konten sicher wiederherzustellen beide funktionen sind in back4app integriert back4app dashboard konfiguration e mail verifizierung aktivieren unter den „app einstellungen“ oder „authentifizierung“ ihrer app konfigurieren sie die absenderadresse und e mail vorlagen passwortzurücksetzung aktivieren um benutzern zu ermöglichen, über einen link, der ihnen per e mail gesendet wird, zurückzusetzen code/implementierung sobald es im dashboard aktiviert ist, können sie passwortzurücksetzungen auslösen defmodule myapp auth do def request password reset(email) do url = config server url() <> "/requestpasswordreset" headers = \[ {"x parse application id", config app id()}, {"x parse rest api key", config rest key()}, {"content type", "application/json"} ] body = jason encode!(%{email email}) httpoison post(url, body, headers) end end schritt 8 – aufgaben mit cloud jobs planen welche cloud jobs gibt es cloud jobs ermöglichen es ihnen, routineaufgaben wie das bereinigen alter daten oder das versenden regelmäßiger e mails zu automatisieren sie schreiben sie in cloud code beispiel // main js parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); code bereitstellen gehen sie zum back4app dashboard > app einstellungen > servereinstellungen > hintergrundjobs planen sie den job, um täglich oder in einem von ihnen gewählten intervall ausgeführt zu werden schritt 9 – integration von webhooks definition webhooks ermöglichen es ihrer back4app anwendung, http anfragen an einen externen dienst (z b einen slack kanal oder stripe) zu senden, wenn bestimmte ereignisse eintreten konfiguration navigieren sie zur webhook konfiguration in ihrem back4app dashboard > mehr > webhooks setzen sie den endpunkt (zum beispiel, https //your service com/webhook endpoint ) konfigurieren sie trigger wie „neuer datensatz in der todo klasse “ beispiel wenn sie daten an slack senden möchten, wann immer ein todo erstellt wird, können sie einen neuen webhook hinzufügen, der auf ihre slack eingangs webhook url zeigt sie können auch webhooks im cloud code definieren, indem sie benutzerdefinierte http anfragen in triggern wie aftersave senden schritt 10 – erkundung des back4app admin panels wo man es findet die back4app admin app ist eine benutzerfreundliche oberfläche zur verwaltung ihrer daten sie können sie aktivieren unter app dashboard > mehr > admin app funktionen erstellen sie einen ersten admin benutzer , der die rolle b4aadminuser und zusätzliche klassen einrichtet weisen sie eine subdomain zu zu, um auf die admin oberfläche zuzugreifen melden sie sich an um daten in einer einfachen oberfläche anzuzeigen und zu verwalten fazit indem sie dieses tutorial zur erstellung eines backends für elixir mit back4app befolgen, haben sie eine sichere backend struktur auf der plattform von back4app mit elixir für die integration erstellt eine datenbank mit klassen, datentypen und beziehungen eingerichtet rest/graphql verwendet, um mit ihren daten aus elixir zu interagieren sicherheit mit acls und clps angewendet benutzerdefinierte logik mit cloud code funktionen hinzugefügt benutzerauthentifizierung mit e mail verifizierung und passwortzurücksetzungen konfiguriert dateispeicherung und abruf verwaltet hintergrundjobs für automatisierung geplant externe dienste mit webhooks integriert das back4app admin panel für eine einfache datenverwaltung erkundet mit dem nebenläufigkeitsmodell von elixir (betrieben von der erlang vm) und otp, kombiniert mit den skalierbaren und flexiblen diensten von back4app, können sie hochrobuste backends erstellen setzen sie die erkundung weiterer fortgeschrittener funktionen fort, integrieren sie ihre geschäftslogik und lassen sie back4app ihnen helfen, die schwere arbeit zu erledigen nächste schritte erstellen sie eine produktionsbereite elixir app indem sie dieses backend mit ihrem bevorzugten elixir/phoenix web framework kombinieren integrieren sie erweiterte funktionen wie rollenbasierte zugriffskontrolle oder drittanbieter apis (zahlungsgateways, messaging dienste) durchsuchen sie die offizielle dokumentation von back4app für erweiterte sicherheit, protokolle, leistungsoptimierung und mehr sehen sie sich andere tutorials an für echtzeitanwendungen, iot dashboards oder standortbasierte dienste mit mustererkennung und otp konkurenz stehen ihnen viele anwendungsmöglichkeiten zur verfügung!