2010-11-04 23 views
11

Moja firma przerabianiu jej API i chce, aby wszystko dobrze do tego czasu;) Ów konfigurację ...RESTful frameworks dla systemu Android, iOS ...?

  • Jesteśmy dostarczania danych do klientów za pośrednictwem Internetu.
  • Klienci mają telefonów komórkowych, takich jak iPhone, Androidy, J2ME, Blackberry ...
  • Serwer jest kodowana w Ruby on Rails

Chcemy to osiągnąć poprzez ramy ...

  • Skorzystaj z ActiveResource na klientach.
  • Ramy powinny wykonać połączenie (REST), parsować i (dynamicznie) dostarczać modele
  • Licencja musi być open source.
  • Zezwolenie zostanie uwzględnione. Używamy OAuth i potrzebujemy dostarczyć token dostępu na każde żądanie. Może jako parametr lub w nagłówku HTTP?
  • Obsługa HTTPS/SSL
  • Obsługa paginacji i relacji (z leniwym ładowaniem) byłaby świetna! Poza tym ramy muszą być przystosowane do tych rzeczy.

Znaleźliśmy już następujące ramy: i prosimy o ocenę. Może ktoś z was wykorzystane niektóre z nich, czy coś innego ...


  • Android: RESTProvider from Novoda/Carl-Gustaf Harroch

    • dostawcy oferują abstrakcją od źródeł danych na Androida i RESTProvider Automatycznie analizuje reakcje relaksującego API do dostawcy. RESTProvider to implementacja wszystkich powszechnie ponownie wdrażanych funkcjonalności podczas obsługi serwisów internetowych w systemie Android. Użytkownicy mogą bezproblemowo łączyć się z dowolnym interfejsem API usług internetowych, który zapewnia odpowiedź JSON lub XML. Aby zapytać RESTProvider w działaniu, użytkownik musi tylko określić punkt końcowy, a następnie zapytać o funkcje RESTful API. RESTProvider obsługuje także wszystkie zapytania HTTP o buforowanie &.
    • Nie znalazłeś dużo dokumentacji, inny niż ten
    • Zapewnia buforowania oraz
    • Release + Dokumentacja planowany jest na początek 2011

  • iOS: http://iphoneonrails.com/

    • Lib do komunikacji między iOS i Rails
    • spokojny i "ActiveResource" -na
    • zawiera XML/JSON Parser
    • licencja wolnego
    • paginacja ?, androida ?, leniwy załadunku?


  • Android: Spring Android Rest Template Module
    • sprężyny RestTemplate jest solidnym, popularny klient REST Java. Moduł Spring Rest Template zawiera wersję RestTemplate, która działa w środowisku Android.


  • Android: Feed Framework
    • com.google.android.feeds
    • Zbiór klas ułatwiających tworzenie dostawców treści. Struktura jest specjalnie zaprojektowana, aby ułatwić połączenie aplikacji z Web API.
+2

Po dość długi czas oceny, zdecydowaliśmy się wybrać teraz „Wiosna Android Rest moduł Template”. – OneWorld

Odpowiedz

11

Jestem autorem RESTProvider. Nadal bardzo wczesny etap, więc nie polecałbym go używać w produkcji. Używam go w kilku projektach, które są w produkcji, ale większość kodu dostosowałem do konkretnych potrzeb. Postaram się uzyskać publiczny stabilny interfejs API pod koniec roku.

W odniesieniu do przeróbek API, proponuję następujące: kompresja

  1. Zastosowanie GZip
  2. Używaj Etags do buforowania
  3. stosować normy bez modyfikacji (widziałem przypadki, w których zmieniono nazewnictwo z oauth_token to my_token, co sprawia, że ​​większość bibliotek jest bezużyteczna bez modyfikacji) - OAuth/REST
  4. Użyj create/modified timestamp i remote id dla wszystkich obiektów, aby włączyć buforowanie strony klienta (SQLite conflict klauzule): {"m yobject ": {" createdAt ": xxxx," rid ":" hashvalue "}} 4a. Użyj dobry sposób, aby zidentyfikować obiekt zwrócony przez użytkownika/Aktywność/aplikacji: OpenSocial zastosowania „id aplikacja” + „ID użytkownika” + „id aktywność”
  5. Wolę JSON na XML
  6. Wolisz prostotę (najniższą możliwą głębokość)
  7. Powrót pełny obiekt z jednego do wielu relacji w obrębie tego obiektu: { „rodzic”: .... „ma”: { „pełny obiekt nie tylko identyfikator”} }
  8. nie powrotu Tylko identyfikatory ("category": [2,3,4] powinny być "category": [{"name": "testing", "id": 2}, {"name": "production", "id": 3}})
  9. Zastanów się, każdy Będą niezależni od siebie nawzajem (tj. I powinny mieć wystarczająco dużo informacji na wezwanie http://test.com/object.json aby wypełnić moje poglądy)

Dla dokumentacji: 1. dostarczenie serwerów testowych 2. Podaj cURL do testowania 3. przedstawiono przykładowe skrypty w języku Java/PHP/Ruby itp ..

To wszystko, na co mogę teraz myśleć. Mogę dodać tę opcję, ponieważ przychodzę z większą sugestią.

+0

Dot. Punkt 8 (i ogólne zasady REST): Należy upewnić się, że każda "rzecz" jest jednoznacznie zidentyfikowana i że jest dostępna za pośrednictwem adresu URL. Adres URL (UNIQUE resource locator) może być używany jako identyfikator obiektu. –

+0

cześć, więc jest wystarczająco stabilny, zamierzam go użyć w projekcie. –

5

Polecam przyjrzeniu RestKit for iOS

  • Wysoka wydajność, gwintowany warstwy sieciowej za pomocą prostego interfejsu API do żądania/odpowiedzi
  • systemu odwzorowania obiektu do mapowania zdalnych ładunków język lokalnych obiektów deklaratywnie (w tym relacje)
  • Integracja z danymi podstawowymi w celu zapewnienia szybkiej lokalnej pamięci podręcznej zdalnych danych z możliwością synchronizacji
  • Obsługa generowania bazy danych nasion z serii ładunków JSON
  • Szczególne wsparcie dla integracji z Ruby on Rails backendów (RKRailsRouter)
  • Apache License
  • używany w produkcji w wielu doskonałych aplikacji (tj Gate Guru)
+0

Używam RestKit dla iOS w kilku moich projektów. Zawsze działa aż do oczekiwań. – Umair

Powiązane problemy