Daten immer über API abfragen?

3 Antworten

Bei professionellen, großen Anwendungen würde man mehrere aufeinanderliegende Schichten von APIs bauen, die jeweils ihre eigene Funktionalität haben:

  • Unten die systemspezifischen APIs, die mit dem zu integrierenden System (das kann auch eine Datenbank sein) reden und diese Kommunikation abstrahieren.
  • In der Mitte Prozess APIs, die eine Integration zwischen verschiedenen Systemen erlauben und so etwas wie systemübergreifende Objektinstanzen bereitstellen.
  • Und zum Anwender hin User Experience APIs, die zugeschnitten auf das jeweilige Anwendungsszenario und Endgerät die passende Menge an Daten bereitstellen.

Jede API-Schicht hat dabei die Möglichkeit, den Zugriff über Berechtigungen zu steuern. Oder auch fallweise zu unterbinden, um Missbrauch zu verhindern, z.B. bei Angriffen. Oder eine Abrechnung der erbrachten Leistung als Pay-per-use zu ermöglichen. Das ist in modernen "API Management" Lösungen bereits alles eingebaut.

Woher ich das weiß:
Berufserfahrung

Was meinst du damit genau mit der API?

Meinst du eine REST API für Webanwendungen? Dann würde es relativ wenig Sinn machen die Nutzereingaben der GUI an den REST Layer weiter zu leiten, denn du müsstest ja quasi eine virtuelle Serveranfrage starten. Da ist es einfacher den REST Layer zu umgehen und direkt den Backend Code zu verwenden.

Ist im Endeffekt ja auch gleich bedeutend mit der verwendung der API nur, dass man diese eben nicht zuerst auf Anfragen für den REST Layer umschreiben muss.

aber ist das nicht ein höheres Sicherheitsrisiko, wenn der Nutzer direkt an einem Skript arbeitet, welches mit der Datenbank verbunden ist?

Wenn die GUI die Daten über die API bezieht können nur exakt die Daten abgerufen werden, die für den Key autorisiert sind.

0
@justrie

Abfragen zur Sicherheit sollten ohnehin nicht umgangen werden. Die kannst du ja in deinen Backend Code schmeißen, dann wirken sie auf die GUI und auf die REST API gleichermaßen.

Ich meine nur du wirst nicht aus einer Anfrage von der GUI eine zweite HTTP Anfrage an den Server starten nur damit du deine Daten von der GUI auf deine REST API bringen kannst.

Lass die interne Anfrage an den Webserver einfach weg und verwende direkt deine Interfacefunktionen. Daten überprüfung etc. sollte bis auf Spezialfälle erst hier passieren.

0

Für gewöhnlich hast du immer eine API.

Warum speichert MySQL DB Zeit falsch ab?

Hello liebe Community!

Ich habe eine Wetterstation mit DHT22 Sensor und einem Raspberry pi realisiert welcher die abgerufenen Daten in eine MySQL DB abspeichert und grafisch in einem Diagramm abbildet. Soweit so gut. Bei Aufruf des Python Scripts welches die Daten vom DHT22 abfragt wird ebenfalls die Zeit mit eingetragen. Das Problem: Wenn das Script per Hand ausführe (als root) wird die korrekte Zeit (local time) eingetragen allerdings wenn das Script per cronjob ausgeführt wird, wird leider die UCT (universal time) eingetragen.

Ich ba die Zeit und Region bereits per raspi-config und dpkg-reconfigure tzdata gesetzt und sogar im cronjob einen Eintrag zum Update der Zeit per ntpdate gesetzt. Hilft nicht. Woran liegt es das verschiedene Zeiten abgerufen werden?

* * * * * ntpdate -s bevtime1.metrologie.at

* * * * * /usr/bin/python /root/Raspberry-Weather/production/getInfo.py

Danke für die Tipps und schönen Samstag!

...zur Frage

mySQL: Wenn ID vorhanden, dann Update sonst INSERT ... ... WIE geht das?

Hallo Zusammen! Ich bin sehr frustriert und ratlos! Meine Lieblingsmeldung seit Tagen: "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ..."

Ich habe so einen GPS-Tracker, da lese ich Daten aus bzw. der Tracker stellt diese Daten in einem CSV-File zur Verfügung! Jeder Datensatz hat eine eindeutige fortlaufende Nummer (Spalte: index). Nun habe ich ein PHP-Script geschrieben, was die Daten in eine mySQL-Tabelle einliest. NEUE GPS-Daten werden dem CSV-File mittels der fortlaufenden Nummer hinzugefügt. Manche GPS-Daten im CSV-File "springen aus der Reihe" und ich kann diese im CSV-File komfortabel löschen. In der Tabelle habe ich selbst noch die Spalte id als PrimaryKey AUTO_INCREMENT hinzugefügt und den index als Unique gekennzeichnet (PRIMARY KEY (id), UNIQUE KEY index (index)). Nun möchte ich nur die Daten einlesen, welche NEU im CSV-File hinzugekommen sind und die "alten" Daten updaten! Klingt einfach, aber ich verzweifle ... Ich habe mit EXISTS gespielt, IF THEN, ... =====1. Versuch===== INSERT INTO db.bt747 (id, index, rcr) VALUES (NULL,1,'TEST') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), index=1; =====2. Versuch===== BEGIN IF(SELECT COUNT() FROM db.bt747 WHERE db.bt747.index = 7)>0 THEN UPDATE db.bt747 SET rcr = 'FREDDY', date = '2014-07-08', time = '21:23:44', valid = 'TEST' WHERE db.bt747.index = 7; ELSE INSERT INTO db.bt747 (rcr,date, time,valid) VALUES ('SEPPEL','2033-12-24','22:23:24','HALLO'); END IF; END =====3. Versuch===== IF EXISTS(SELECT COUNT() FROM db.bt747 WHERE db.bt747.index = 7) THEN UPDATE db.bt747 SET rcr = 'FREDDY', date = '2014-07-08', time = '21:23:44', valid = 'TEST' WHERE db.bt747.index = 7; ELSE INSERT INTO db.bt747 (rcr,date, time,valid) VALUES ('SEPPEL','2033-12-24','22:23:24','HALLO'); END IF;

Wenn ich die einzelnen Selects (SELECT COUNT(*) ..., UPDATE ..., INSERT ...) ausführe, funktioniert es, aber im Zusammenspiel mit IF THEN, EXISTS, ON DUPLICATE KEY UPDATE kommt immer die Lieblingsmeldung ...

Wahrscheinlich eine Kleinigkeit, für jemanden der sich damit auskennt ...

VIELEN Dank für Eure Hilfe Gruss W.

...zur Frage

Suche Minecraft Befehl! BITTE ANTWORTEN

Hey! Wie heißt kann man in der 1.8 in einem Befehl NBT Daten abfragen, sodass man nur den Personen die die Ketten Brustplatte mit der Lore "123" einen bestimmten Efekt z.B. gibt?

Also irgendwie so: /effect @a{.........} minecraft:speed 2 1

also welche sachen in die Klammer um das Rüstungs Inventar abzufragen

Schon mal Danke, Moleku

...zur Frage

Ist Perl 2016, im Bereich Webentwicklung, noch aktuell - und sollte man lieber PHP oder Perl wählen für einfache 'Backend'-Anwendungen?

Hey, ich überlege gerade ob ich Perl lernen sollte. Weil ich gern meine eigenen 'Backends' schreiben würde. Ich möchte dass man sich auf einer Website einloggen kann und dann in diesem Backend einfach bestimmte Daten wie z.B. die Kosten für verschiedene Produkte oder die Starttermine von Veranstaltungen ändern kann. Ich kenne da einen ziemlich einfachen Weg mit Perl, bei dem quasie für eine art Kalender einfach .dat Dateien geschrieben werden und diese werden dann per .cgi Script in die Website Geladen. Die Informationen die man im Backend verändert, werden in diesen Dateien gespeichert.

Ist dieses Vorhaben schwerer mit PHP oder Perl zu realisieren? Da PHP doch um einiges umfangreicher ist als Perl weiß ich nicht ob ich extra PHP lernen möchte.

Perl ist ja doch schon etwas in die Jahre gekommen, findet es denn 2016 immernoch anwendung bei Websites?

...zur Frage

Tabelle mit Datenbankinhalt per php Mail senden?

Hallo ich habe ein Script mit Datenbankabfrage und möchte diese Abfrage gerne als Tabelle wiedergeben. Diese Tabelle soll nun in einer eMail an Empfänger x versandt werden.

Ich bekomme es bislang hin, pro Datensatz eine eMail zu senden und eine eMail mit einer Tabelle ohne Datenbankinhalt (Also mit festen Test-Daten) zu senden. Nur eben keine Tabelle mit Datenbankinhalt.

Hoffentlich kann mir hier jemand helfen. Hier mein aktueller Codeschnipsel:

$sql = "SELECT ID,Mandant,FP,ABP,erledigt FROM ABPTest WHERE erledigt Like 0";
$query = mysql_query($sql);
$message="";        
while($row = mysql_fetch_array($query)){
$message .= 
         '<table border=1>';
    '<tr>';        
    '<td width="20">"Test"</td>';
            '<td width="80">"abc"</td>';
    '</tr>';
     '</table>'; }
$empfaenger = "empfänger@test.de";
$betreff = "Test";
$from = "From: Nils Reimers <absender@domain.de>\n";
$from .= "Reply-To: antwort@domain.de\n";
$from .= "Content-Type: text/html\n";
mail($empfaenger, $betreff, $message, $from); 

Angezeigt werden sollen in der eMail dann die Spalten "Mandant, FP und ABP. Pro Datensatz eine Zeile. Als Anzeige per echo bekomme ich es hin aber in einer eMail eben leider nicht. Sieht jemand den Fehler und kann mein Script korrigieren?

...zur Frage

Java - Variablen eingeben und nach neutstart abfragen können

Habe ein Datenbankprogramm(eingabe,ausgabe,löschen). Ich kann in den Programm die jeweilige DB mit Tabelle und Url auswählen, aber es ist sehr umständlich das bei jeden Neustart des Programmes wieder abzufragen. Deshalb sollen die Zugangsdaten gespeichert werden. Aber trzd noch veränderbar sein. Also kurz gesagt die letzte Variablen die gespeichert wurden, bei Programmstart abgefragt werden.

Würdet ihr es in ein .Txt oder .Xml file speichern ?

Oder habt ihr eine andere Idee wie ich das bewerkstelligen kann ?

...zur Frage

Was möchtest Du wissen?