
- Admin
- Forum-Beiträge: 11.294
28.08.2016, 12:45:44 via Website
28.08.2016 12:45:44 via Website
Hallo zusammen,
Für Leute die kein Vorwort lesen wollen
Hier im Forum kommen immer wieder Fragen zur Server Anbindung mit Android vor,
daher dachte ich mir, ich erstelle ein Tutorial, wie ich meine Apps mit meinem Server kommunizieren lasse.
Im Wesentlichen soll es hier um die API Programmierung in PHP gehen, aber auch wie man diese API auf Android Seite gut benutzt.
Dabei lege ich großen Wert aufs Error Handling, welches hier auch durchgereicht wird.
WICHTIG: Dieses Tutorial richtet sich an mittelmäßig- bis gute Android Programmierer. Um das hier zu verstehen benötigt man vertieftes wissen in Java und basiswissen in PHP. Bitte vor der Verwendung unbedingt lesen, denn mit Copy&Pase werdet ihr (hoffentlich) nicht weit kommen
Wer nicht mehr so richtig weiß was REST und das Format JSON ist bitte nachlesen.
Als Beispiel programmiere ich einen (wirklich) kleinen MySql Client für Android, für MySql Datenbanken welche über Port 3306 nicht von außen aus dem Internet erreichbar sind.
[Das Endprodukt in PHP und Android ist zwar auf GitHub vorhanden, bevor es jedoch passend genutzt werden kann, muss erst eine passende API Sicherung/Login eingebaut werden, ansonsten kann JEDER eure DB lesen schreiben und löschen. Deswegen läuft das ganze bei mir lokal im Netzwerk und mit einer Test DB.
Ich benutze folgendes:
1. Einen PHP fähigen Server (lokal XAMPP) (ab PHP 5.1.x)
2. Einen gescheiten PHP Codeditor ( Notepad++ oder VisualStudio Code)
3. AndroidStudio für die App
Warum ein extra Tutorial, kann es nicht jeder so machen wie er will?
Natürlich kann es jeder nach Lust und Laune programmieren, ich will hier nur mal meine Vorgehensweise beschreiben, welche dem einen oder anderen durchaus helfen kann.
Seitdem ich mit Android und PHP arbeite, erstelle ich gelegentlich APIs um irgendwelche Daten vom Server abzurufen oder zu speichern.
Am Anfang ganz primitiv, jede „Funktion“ ist eine PHP Datei, und die Parameter per get und Post übertragen.
Wenn man damit jetzt einen größeren Funktionsumfang in der API anbieten will, hat man recht schnell viele PHP Dateien und es wird unübersichtlich, hinzu kommt noch das man viele recht unschöne Urls hat
z.b. http://example.com/api/getPersons.php?offset=10&limit=10
Diese URL gibt mir z.b. 10 Personen aus einer Datenbank zurück, 10 an der Zahl ab dem 10 Eintrag.
Ich Persönlich mag diese Art API URLs nicht, und es ist auch kein Standard.
Schaut man sich andere APIs an und setzt den Standard um dann müsste die URL gewisser maßen so aussehen:
http://example.com/api/persons/10/10
Da habe ich keine PHP Extension und kein Filename mehr.
Genau das war dann auch mein Ziel, weg von den einzelnen Dateien, hin zu den Standard API URLs.
Aber wie umsetzten ohne Grundlage – das war die Frage.
Ich brauchte eine Art allgemeine API Definition, welche sich beliebig erweitern lässt.
Gedacht getan, aus dieser Idee entstand meine PHP Klasse ApiFrame.class.php.
Damit habe ich alles was ich brauche, eine allgemeine Klasse welche API aufrufe entgegennimmt, auswertet und im PHP Skript selber an die entsprechende Funktion vermittelt und dabei den Rückgabewert in JSON ausgibt.
Den Aufbau der Klasse und die einzelnen Methoden werde ich jetzt nicht im Detail erklären, wenn es jemand interessiert, bitte nicht scheuen nachzufragen.
Auf jeden Fall dachte ich mir dann, wenn schon so allgemein, dann auch noch allgemeine Infos wie Status und Server Verarbeitungszeit und Errors einbauen.
Damit war die Grundlage gesetzt.
Nun kann man mit dieser Klasse ganz einfach APIs erstellen, zudem ist man nicht mehr an einzelne Dateien gebunden, sondern kann viele API Funktionen in einer Datei definieren.
— geändert am 28.08.2016, 12:48:37
LG Pascal //It's not a bug, it's a feature.