Piszę aplikację na iPhone'a jako projekt hobbystyczny i będzie potrzebować usługi internetowej, aby zapewnić jej dane. Nie różni się zbytnio od tego, co robię w pracy, ale w pracy piszę tylko widoki i kontrolery. Ktoś inny jest odpowiedzialny za napisanie modelu i zwykle to klienci zapewniają usługę sieciową.
Robiłem już trochę programowania internetowego, kiedy wszyscy używali MySQL i PHP, więc moje umiejętności są nieco przestarzałe, ale jestem przekonany, że byłbym w stanie to zrobić, używając technik, które już znam. Nie chcę jednak tracić czasu na używanie przestarzałych narzędzi. Doszedłem do wniosku, że najnowszym stanem techniki będzie napisanie REST API. Pomyślałem, że powinny istnieć całkiem dobre frameworki, które prawie dają ci REST API z funkcjonalnością CRUD, gdy tylko zdefiniujesz model.
Myślę, że moje pytanie brzmi: Jaki byłby najszybszy sposób na uruchomienie i uruchomienie REST API? Naprawdę chcę skupić się na pisaniu aplikacji na iPhone'a i nie spędzać zbyt wiele czasu na tym API. Byłoby wspaniale, gdybym mógł mieć również administrację internetową i historię zmian. Powinienem również dodać, że API nie powinno być publiczne, więc obsługa uwierzytelniania również byłaby świetna.
Żeby było jasne. Nie miałbym nic przeciwko frameworkowi PHP. W rzeczywistości mogłoby być lepiej, ponieważ wiem, że mój obecny hosting to obsługuje.
Odpowiedzi:
EDYTOWAĆ:
Poniższe linki, które najwyraźniej były dobre przez 3 lata, już nie działają, więc poszedłem i znalazłem kilka nowych samouczków, które, jak sądzę, zostaną przez jakiś czas. Znajdują się one na stronie Ray Wenderlich, bardzo szanowanej witrynie z samouczkami dla programistów iOS. Pierwszy artykuł odnosi się do niedziałających linków poniżej, ale sam w sobie jest kompletny:
Jak napisać prostą usługę sieciową PHP / MySQL dla aplikacji na iOS
a druga ma trochę skrętu. Używał parse.com na zapleczu i AFNetworking. Oba są całkiem doskonałe.
Jak zsynchronizować podstawowe dane z usługą sieci Web - część 1
Naprawiłem zepsute linki poniżej, znajdując artykuły w drodze powrotnej maszyny. Ludziom podobają się linki, więc zatrzymam je. Powyższe linki powinny dać więcej do myślenia.
Robię dokładnie to samo z moją aplikacją na iPhone'a. Znalazłem ten artykuł na temat tworzenia RESTful API w PHP:
https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
a także artykuł uzupełniający:
https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/
z linkiem do kodu źródłowego na dole artykułu.
źródło
Zaprogramowałem REST API w ZEND Framework używając Zend_Rest_Controller, na iPhonie użyłem ASIHTTPRequest . Moje doświadczenia z obydwoma były dobre. Na początku miałem problemy ze skonfigurowaniem ZENDa i połączeniem go z mySQL, ale kiedy już zorientowałem się, jak to zrobić, byłem w stanie bardzo szybko napisać API. Jeśli masz dodatkowe pytania, mogę przekazać Ci więcej informacji.
EDYCJA: Wydaje się, że nie ma oficjalnej dokumentacji na temat
Zend_Rest_Controller
. Ten link opisuje, jak go używać do tworzenia interfejsu API. Musisz po prostu wyłączyć renderowanie winit()
swojej podklasie i zaimplementować metody dla każdego wywołania REST.źródło
Dla Twojej wiadomości:
Skończyło się na Ruby on Rails.
EDYCJA: Ponieważ ta odpowiedź została odrzucona, ponieważ nie podała powodu wyboru Ruby on Rails, a także nie ma instrukcji, jak napisać REST API za jego pomocą, pomyślałem, że dam ci moją motywację i kilka prostych instrukcji.
Zacząłem czytać książkę o Ruby on Rails i zdałem sobie sprawę, że wszystko, co muszę zrobić, to użyć rusztowania i otrzymałem za darmo JSON REST API.
Oto dobry przewodnik na początek: http://guides.rubyonrails.org/getting_started.html
Kiedy masz uruchomione i uruchomione środowisko Ruby on Rails, utworzenie REST API nie jest trudniejsze niż uruchomienie:
$ rails generate scaffold Post name:string title:string content:text
(Przykład z powyższego linku.) Zauważyłem również, że Railsy są bardzo łatwe i darmowe do wdrożenia na heroku , co oznaczało, że nie musiałem płacić za hosting dla mojego bardzo podstawowego, niskiego ruchu, REST API. Jest wiele innych powodów, dla których bardzo się cieszę ze współpracy z Ruby on Rails, ale to wykracza poza kontekst tego pytania.
źródło
Postępowałem zgodnie z dość prostym samouczkiem dotyczącym tworzenia interfejsów API RESTful w PHP:
Corey Maynard - Tworzenie RESTful API w PHP
Główna koncepcja obejmuje:
źródło
A co z Pythonem?
Używałbym Pythona, Django i Pistona.
Bez doświadczenia z Pythonem lub Django, prawdopodobnie zajmie ci dzień opracowanie tego rozwiązania, a cały kod jest testowany jednostkowo i działa .
źródło
Jeśli chcesz korzystać z PHP, polecam użycie frameworka CodeIgniter z serwerem REST Phila Sturgeon'a:
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2
https://github.com/philsturgeon/codeigniter-restserver
źródło
Sprawdź następującą klasę PHP, która jest zgodna z MVC. http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html
Mam nadzieję że to pomoże.
źródło
Jeśli znasz już PHP, nie ma nic złego w zapleczu PHP / MySQL. Możesz wysłać wszystkie odpowiedzi w formacie plist xml kompatybilnym z iPhonem i natychmiast przekształcić je w strukturę danych NSDictionary / NSArray / NSNumber za pomocą tego krótkiego fragmentu kodu:
NSString *response = [request responseString]; NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding]; NSPropertyListFormat format; NSString *errorStr; NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&errorStr];
Korzystam również z pakietu ASIHTTP do tworzenia adresów URL, wysyłania asynchronicznych zapytań i otrzymywania odpowiedzi, gorąco polecam:
http://allseeing-i.com/ASIHTTPRequest/
źródło
W usłudze sieciowej należy używać dowolnych języków, w których czujesz się swobodnie. Każdy język, w którym można formułować odpowiedzi REST na żądania, jest w porządku.
To powiedziawszy, jeśli chcesz, aby coś działało szybko, sugeruję użycie Pythona w Google App Engine. To nic nie kosztuje i jeśli chcesz, możesz używać Javy zamiast Pythona. App Engine obsługuje uwierzytelnianie za pomocą OpenID i / lub kont Google (nie wiadomo, czy wykluczają się wzajemnie), więc powinno to ułatwić kodowanie.
Jeśli chodzi o wysyłanie żądań na urządzenie iOS, sugeruję użycie ASIHTTPRequest .
źródło
Inną opcją jest restSQL, ultralekka struktura trwałości. Zobacz http://restsql.org . Obsługuje MySQL i PostgreSQL i działa w standardowym kontenerze Java EE, np. Apache Tomcat.
restSQL to bardzo niekonwencjonalna warstwa dostępu do danych. restSQL nie jest zorientowanym obiektowo widokiem bazy danych. Przedstawia płaskie lub hierarchiczne „widoki” tabel relacyjnych baz danych. Te widoki są obsługiwane za pomocą zapytań i aktualizowane za pomocą prostego interfejsu API HTTP lub Java opartego na REST. Interfejs HTTP jest oparty na zasadach REST, które wykorzystują wbudowane funkcje HTTP, a nie odbiegają od nich.
Potrzebujesz „REST API z funkcjonalnością CRUD” i to jest właśnie najlepsze rozwiązanie restSQL. Możesz to zrobić bez kodu. Po prostu zdefiniuj zasoby SQL za pomocą plików XML i zacznij wykonywać na nich wywołania HTTP z pełną funkcjonalnością CRUD.
źródło