Ich schreibe eine iPhone-App als Hobbyprojekt und sie benötigt einen Webdienst, um sie mit Daten zu versorgen. Es unterscheidet sich nicht sehr von dem, was ich bei der Arbeit mache, aber bei der Arbeit schreibe ich nur Ansichten und Controller. Jemand anderes ist für das Schreiben des Modells verantwortlich, und normalerweise stellen die Kunden den Webdienst bereit.
Ich habe schon früher einige Web-Programmierungen durchgeführt, als alle MySQL und PHP verwendeten, daher sind meine Fähigkeiten etwas veraltet, aber ich bin zuversichtlich, dass ich die Techniken, die ich bereits kenne, nutzen kann. Ich möchte jedoch meine Zeit nicht mit veralteten Tools verschwenden. Ich habe herausgefunden, dass der Stand der Technik darin besteht, eine REST-API zu schreiben. Ich dachte, dass es einige ziemlich gute Frameworks geben sollte, die Ihnen so ziemlich nur eine REST-API mit CRUD-Funktionalität bieten, sobald Sie ein Modell definiert haben.
Ich denke meine Frage ist: Was wäre der schnellste Weg, um eine REST-API zum Laufen zu bringen? Ich möchte mich wirklich nur auf das Schreiben der iPhone-App konzentrieren und nicht zu viel Zeit mit dieser API verbringen. Es wäre großartig, wenn ich auch Webadministration und Revisionsverlauf erhalten könnte. Ich sollte auch hinzufügen, dass die API nicht öffentlich sein soll, daher wäre die Unterstützung für die Authentifizierung ebenfalls großartig.
Nur um das klar zu stellen. Ich hätte nichts gegen ein PHP-Framework. In der Tat könnte es möglicherweise besser sein, da ich weiß, dass mein aktuelles Hosting es unterstützt.
Antworten:
BEARBEITEN:
Die Links, die anscheinend 3 Jahre lang gut waren, funktionieren nicht mehr, also habe ich ein paar neue Tutorials gefunden, von denen ich denke, dass sie noch eine Weile bleiben werden. Diese befinden sich auf der Ray Wenderlich-Website, einer sehr angesehenen ios dev-Tutorial-Website. Der erste Artikel verweist tatsächlich auf die defekten Links unten, ist aber in sich selbst vollständig:
So schreiben Sie einen einfachen PHP / MySQL-Webdienst für eine iOS-App
und der zweite hat eine kleine Wendung. Es verwendete parse.com im Backend und AFNetworking. Beide sind sehr gut.
So synchronisieren Sie Kerndaten mit einem Webdienst - Teil 1
Ich habe die defekten Links unten behoben, indem ich die Artikel auf dem Rückweg gefunden habe. Die Leute scheinen die Links zu mögen, also werde ich sie behalten. Die obigen Links sollten mehr Denkanstöße geben.
Ich mache genau das gleiche mit meiner iPhone App. Ich habe diesen Artikel zum Erstellen einer RESTful-API in PHP gefunden:
https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
und hier gibt es auch einen Folgeartikel:
https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/
mit einem Link zum Quellcode am Ende des Artikels.
quelle
Ich habe eine REST-API in ZEND Framework mit dem Zend_Rest_Controller programmiert, auf dem iPhone habe ich ASIHTTPRequest verwendet . Meine Erfahrung mit beiden war gut. Am Anfang hatte ich einige Probleme, ZEND einzurichten und mit mySQL zu verbinden, aber als ich herausgefunden hatte, wie es geht, konnte ich die API sehr schnell schreiben. Ich kann weitere Informationen mit Ihnen teilen, wenn Sie weitere Fragen haben.
EDIT: Es scheint keine offizielle Dokumentation zu geben
Zend_Rest_Controller
. Dieser Link beschreibt, wie Sie damit Ihre API erstellen. Sie müssen lediglich das Rendern ininit()
Ihrer Unterklasse deaktivieren und die Methoden für jeden REST-Aufruf implementieren.quelle
Nur um Sie wissen zu lassen:
Am Ende habe ich Ruby on Rails verwendet.
BEARBEITEN: Da diese Antwort abgelehnt wurde, weil sie nicht den Grund für die Wahl von Ruby on Rails und auch keine Anweisungen zum Schreiben einer REST-API enthält, dachte ich, ich würde Ihnen meine Motivation und einige einfache Anweisungen geben.
Ich begann ein Buch über Ruby on Rails zu lesen und stellte fest, dass ich nur Gerüste verwenden musste, und bekam eine kostenlose JSON REST-API.
Hier ist eine gute Anleitung, um Ihnen den Einstieg zu erleichtern: http://guides.rubyonrails.org/getting_started.html
Wenn Sie Ihre Ruby on Rails-Umgebung eingerichtet haben, ist das Erstellen Ihrer REST-API nicht schwieriger als das Ausführen:
(Beispiel aus dem obigen Link.) Ich fand auch, dass Rails sehr einfach und kostenlos für Heroku bereitzustellen ist , was bedeutete, dass ich nicht für das Hosting für meine sehr einfache REST-API mit geringem Datenverkehr bezahlen musste. Es gibt viele andere Gründe, warum ich sehr glücklich bin, mit Ruby on Rails zu arbeiten, aber das geht über den Kontext dieser Frage hinaus.
quelle
Ich folgte einem recht einfachen Tutorial zum Erstellen von RESTful-APIs mit PHP:
Corey Maynard - Erstellen einer RESTful-API mit PHP
Das Hauptkonzept umfasst:
quelle
Was ist mit Python?
Ich würde Python, Django und Piston verwenden.
Ohne Erfahrung mit Python oder Django werden Sie wahrscheinlich einen Tag brauchen, um diese Lösung zu entwickeln, und der gesamte Code ist Unit-getestet und hat sich als funktionsfähig erwiesen .
quelle
Wenn Sie PHP verwenden möchten, empfehle ich die Verwendung des CodeIgniter-Frameworks mit dem REST-Server von Phil Sturgeon:
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2
https://github.com/philsturgeon/codeigniter-restserver
quelle
Überprüfen Sie die folgende PHP-Klasse, die auf MVC folgt. http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html
Hoffe das hilft.
quelle
Wenn Sie PHP bereits kennen, ist an einem PHP / MySQL-Backend nichts auszusetzen. Sie können alle Antworten im iPhone-kompatiblen plist xml-Format senden und die Antwort sofort in eine NSDictionary / NSArray / NSNumber-Datenstruktur mit diesem kurzen Codeausschnitt umwandeln:
Ich verwende das ASIHTTP-Paket auch zum Bilden von URLs, zum Senden asynchroner Anforderungen und zum Empfangen von Antworten. Ich kann es nur empfehlen:
http://allseeing-i.com/ASIHTTPRequest/
quelle
Sie sollten für den Webdienst alle Sprachen verwenden, mit denen Sie vertraut sind. Jede Sprache, die REST-Antworten auf Anforderungen formulieren kann, ist in Ordnung.
Wenn Sie jedoch schnell etwas zum Laufen bringen möchten, empfehle ich die Verwendung von Python in Google App Engine. Es ist kostenlos und Sie können Java anstelle von Python verwenden, wenn Sie dies wünschen. App Engine unterstützt die Authentifizierung mithilfe von OpenID und / oder Google-Konten (nicht sicher, ob sie sich gegenseitig ausschließen), damit die Codierung einfacher wird.
Für die Anforderung auf dem iOS-Gerät empfehle ich die Verwendung von ASIHTTPRequest .
quelle
Eine weitere Option ist restSQL, ein ultraleichtes Persistenz-Framework. Siehe http://restsql.org . Es unterstützt MySQL und PostgreSQL und läuft in einem Standard-Java EE-Container, z. B. Apache Tomcat.
restSQL ist eine sehr unkonventionelle Datenzugriffsschicht. restSQL ist keine objektorientierte Ansicht der Datenbank. Es zeigt flache oder hierarchische "Ansichten" relationaler Datenbanktabellen. Diese Ansichten können über eine einfache REST-basierte HTTP- oder Java-API abgefragt und aktualisiert werden. Die HTTP-Schnittstelle basiert auf REST-Prinzipien, die die integrierten Funktionen von HTTP verwenden, anstatt von diesen zu abstrahieren.
Sie möchten eine 'REST-API mit CRUD-Funktionalität' und genau das ist der Sweet Spot von restSQL. Sie könnten dies ohne Code tun. Definieren Sie einfach Ihre SQL-Ressourcen über XML-Dateien und starten Sie HTTP-Aufrufe mit voller CRUD-Fähigkeit.
quelle