Fragenkatalog bzgl RESTful WebServices, hartkodierte Strings, AsyncTask, etc.

  • 7 Antworten
  • Letztes Antwortdatum
T

toomuchcoffeeman

Ambitioniertes Mitglied
15
Hallo zusammen,

ich habe mich an meine erste App gewagt und nun tauchen etliche Fragen auf. Bevor ich weiter mache, würde ich gerne einige grundsätzliche Fragen klären, bevor ich mir einen Fehler einbaue. Bzw. möchte ich den Kram so gut wie möglich verstanden und implementiert haben, bevor ich die Kernfunktionen der App implementiere.

Generell gilt: Ich brauche keinen vorgekauten Code. Hinweise und Links zu KnowledgeBases oder so was sind mit wichtiger, damit ich auch verstehe, was ich da mache. Also ein Tritt in die "richtige" Richtung. :)

---

Aktuell steht lediglich der User-Login. Hierfür kommuniziert Android mit mehreren PHP-Dateien im JSON-Format. Der HTTPRequest wird in der jeweiligen Activity (Login, Register, Logout, Reset Password) in einem AsyncTask bearbeitet.

1. Momentan sind die URLs zu den PHP-Scripten hartkodiert. Sie lassen sich also wohl einigermaßen simpel auslesen. Zum Beispiel kann man ja dann sehen, dass das login-Script unter www.meineurl.de/login.php liegt. Gibt es eine andere Möglichkeit die URLs besser zu verbergen? Oder zumindest den Zugriff darauf zu erschweren, wenn man den Link kennt?
Oder mache ich mir da unnötig Sorgen?

2. Der HttpRequest an die URLs findet wie gesagt in einem AsyncTask statt. Dies habe ich aus diversen Foren und online-Quellen "abgekupfert". Nun bin ich aber auch über die Info gestolpert, dass ein AsyncTask abgebrochen wird, wenn sich zum Beispiel die Displayorientierung ändert. Sprich, der Response geht verloren. Stimmt das? Und falls ja, wie kann ich das umgehen? Best practices?

3. Ich finde nur sehr wenige brauchbare Informationen zu RESTful WebServices. Und auch in den Büchern, die mir zur Verfügung stehen, steht das Architekturmuster immer nur grob erklärt. Daher habe ich noch Verständnisschwierigkeiten, was die Umsetzung angeht.

Angenommen ich habe eine Datenbank mit Artikeln. Sagen wir die Basisadresse zu dem Script, dass die Anfrage behandeln soll ist www.meineurl.de/artikel. Dies wäre dann wohl ein Script, dass mir eine Liste aller Artikel liefert. So weit so gut.

Nun lese ich ständig, dass wenn ich beispielsweise den Artikel mit der id 3 ansehen will, der Aufruf über die URL www.meineurl.de/artikel/3 erfolgen könnte/sollte/müsste ... In Android kann ich die Id sicherlich mit abfragen und dann eine URL daraus erstellen. Aber macht das überhaupt Sinn? Müsste ich dann serverseitig auf die URL reagieren und dort die Artikelnummer extrahieren? Ihr seht: Da steh ich wie Ox vorm Berg. Wie liesse sich so etwas mit PHP umsetzen?

4. Designfrage: Eine der Kernfunktionen der App wird es sein, eine Datenbank mit Artikeln und zugehörigen Fotos durchsuchen zu können (online). Nun möchte ich dem User aber auch anbieten, die Daten auf Wunsch offline - also auf dem mobilen Gerät - verfügbar zu haben. Mein erster Ansatz wäre es, die Daten in einer SQLite-Datenbank abzulegen. Ist das eine "übliche" Lösung? Wie würdet Ihr das machen? Und: Soll ich die Artikel nur herunterladen und speichern, oder soll ich mir zu Synchronisationszwecken auch merken, welche Artikel der User herunter geladen hat?

---

Ich freue mich wirklich sehr über jede Hilfestellung und Anteilnahme an der Diskussion.

Beste Grüße,
Thomas
 
Hallo Thomas,

wie gut sind deine Kenntnisse in der Android Entwicklung und wie gut verstehst du englische Fachliteratur?

Mfg

pootney
 
Hi,

meine Android-Kenntnisse sind 0. Ist meine erste App.
Aber in Java habe ich einige Erfahrung. Und mit englischer Fachliteratur komme ich sehr gut zurecht.

Gruß,
Thomas
 
zu 3:
Je nachdem wie du den Server programmiert hast. Bei mir ist z.b die übersichtsseite
Code:
.../seite.php
Wenn ich dann einen Artikel aufrufe, wird das gleiche Script nochmal aufgerufen, nur das ein GET Parameter
Code:
.../seite.php?id=1
angehängt ist.
Den GET Parameter brauchst du nicht zu extrahieren, du kannst dann einfach mit
PHP:
$_GET['iD']
den Parameter bekommen. Anhand von diesem GET Parameter kann dann der Artikel zurückgegeben werden.
Wenn du dazu den Code von unserer Seite
Android Programmierung Tutorials
hier willst, das ein Art selbst erstelltes CMS ist, was den Inhalt aus einer SQL Datenbank holt, schreibe mir eine PN!
 
Hi,

schade dann kann ich dir das Buch nicht empfehlen weil es an fortgeschrittene gerichtet ist und nicht zu unterschätzen ist.

Mfg

pootney

Gesendet von meinem Nexus 7 mit der Android-Hilfe.de App
 
Wenn du gerne lernst, sie dir Symfony und das FOSRestBundle an. Nimmt einen sehr viel Arbeit ab und lässt einen sich voll auf die Logik konzentrieren. REST APIs with Symfony2: The Right Way

REST und HTTP ganz interessant und auch für den Einstieg geeignet.
 
Zuletzt bearbeitet von einem Moderator:
@blackfire185
Genauso hatte ich mir das auch zurecht gereimt. War nur nicht sicher, da ich irgendwo aufgeschnappt habe, dass man keine Parameter anhängen soll, sondern dass rein über eine logische URI handhabt.

@pootney
Welches Buch wäre das denn gewesen und welche meiner 4 angesprochenen Themen werden darin behandelt? Anfängerbücher brauche ich eh nicht, da man die Basics in aller Regel in zahlreichen Tutorials und Blogs online findet.

@TheDarkRose
Danke. Das Buch sieht vielversprechend aus, die Rezensionen ebenfalls. Das werde ich mir kommenden Monat zulegen. Aktuell habe ich noch zwei andere Schinken hier liegen.
Und danke auch für den Link. Nach dem ersten Überfliegen sieht das wirklich sehr gut aus. Ich schaue mir das mal in Ruhe an und dann muss ich entscheiden, ob das nicht ein bisschen zu mächtig ist. Eine der Lizenzen ist mir nicht bekannt, da muss ich dann auch schauen, ob ich die so nutzen kann.



@all
Wie schaut es denn mit Punkt 2 aus. Kann sich dazu niemand äußern?


Beste Grüße,
Thomas
 
Hast schon recht, bei einen richtigen Rest webservice machten das auch nicht über ?foo=bar

Symfony und alle FriendsOfSymfony Bundles sind unter der Mit Lizenz und somit auch kommerziell verwendbar. Generell sollte man immer ein Framework benutzen, den plain PHP zu schreiben ist viel zu fehleranfällig und man muss wirklich alles selbst erfinden und das ist definitiv immer schlechter und nicht so sicher, als ein Framework hinter dessen seit Jahren erfahrene Entwickler und Firmen stehen.

Gesendet von meinem Nexus 7 mit Tapatalk 2
 
Zurück
Oben Unten