RESTful фреймворки для Android, iOS...?
Моя компания дорабатывает свой API и хочет сделать все правильно на этот раз;) Вот и все...
- Мы доставляем данные клиентам через Интернет.
- Клиентами являются мобильные телефоны, такие как iPhone, Androids, J2ME, Blackberry...
- Сервер закодирован в Ruby on Rails
Мы хотим достичь через рамки...
- Используйте ActiveResource на своих клиентах.
- Фреймворк должен выполнять подключение (REST), анализ и (динамически) предоставление моделей.
- Лицензия должна быть с открытым исходным кодом.
- Авторизация должна быть включена. Мы используем OAuth и должны предоставить токен доступа по любому запросу. Может быть, в качестве параметра или в HTTP-заголовке?
- Поддержка HTTPS/SSL
- Поддержка разбиения на страницы и отношений (с ленивой загрузкой) была бы отличной! В противном случае рамки должны быть в состоянии приспособиться к этим вещам.
Мы уже нашли следующие рамки и просим вас, ребята, оценить их. Может быть, один из вас использовал некоторые из них или что-то другое...
Android: RESTProvider от Новода / Карл-Густав Харрок
- Поставщики предлагают абстракцию от источников данных на Android, а RESTProvider автоматически анализирует ответы API RESTful в поставщика. RESTProvider - это реализация всех часто реализуемых функций при работе с веб-сервисами в Android. Пользователи могут легко взаимодействовать с любым API веб-сервиса, который предоставляет JSON или XML в качестве ответа. Чтобы запросить RESTProvider в действии, пользователю нужно только указать конечную точку, а затем запросить API-функции RESTful. RESTProvider также обрабатывает все HTTP-запросы и кеширование.
- Не нашел много документации, кроме этого
- Обеспечивает также кэширование
- Релиз + документация запланирована на начало 2011 года
iOS: http://iphoneonrails.com/
- Lib для связи между iOS и Rails
- RESTful и на основе ActiveResource
- включает в себя XML/JSON Parser
- бесплатная лицензия
- нумерация страниц?, Android?, Ленивая загрузка?
- Android: ручной подход с использованием курсоров на базе SQLLite DB
- предназначен быть очень производительным и лучшей практикой Android
- использует курсоры
- Android: Весенний модуль Android Rest Template
- Spring RestTemplate - это надежный и популярный REST-клиент на основе Java. Модуль Spring Rest Template Module предоставляет версию RestTemplate, которая работает в среде Android.
- Android: Вы всегда должны смотреть на это видео Google IO 2010, когда серьезно относитесь к REST
- Android: Feed Framework
- com.google.android.feeds
- Коллекция классов, которые помогут вам создать контент-провайдеров. Фреймворк специально разработан, чтобы помочь подключить ваше приложение к веб-API.
3 ответа
Я являюсь автором RESTProvider. Еще очень ранняя стадия, поэтому я бы не рекомендовал использовать ее в производстве. Я использовал его в нескольких проектах, которые находятся в производстве, но я адаптировал большинство кода для конкретных нужд. Я постараюсь получить публичный стабильный API к концу года.
Что касается доработки API, я бы предложил следующее:
- Использовать сжатие GZip
- Используйте ETags для кеширования
- Используйте стандарты без изменений (я видел случаи, когда именование изменялось с oauth_token на my_token, что делает большинство библиотек бесполезными без изменений) - OAuth/REST
- Используйте метки создания / изменения времени и удаленные идентификаторы для всех объектов, чтобы включить кэширование на стороне клиента (конфликтные предложения SQLite): {"myobject": {"creationAt": xxxx, "rid": "hashvalue"}} 4a. Используйте хороший способ для идентификации объекта, возвращаемого для пользователя / действия / приложения: opensocial использует "идентификатор приложения" + "идентификатор пользователя" + "идентификатор активности"
- Предпочитаю JSON XML
- Предпочитаю простоту (минимальная возможная глубина)
- Вернуть полный объект с отношением один ко многим внутри этого объекта: {"parent":.... "has": {"полный объект, а не только идентификатор"}}
- Не возвращайте только идентификаторы ( "category": [ 2,3,4] должно быть "category": [{"name": "testing", "id": 2},{"name": "production", "id": 3 }})
- Считайте, что каждый вызов не зависит друг от друга (т.е. у меня должно быть достаточно информации для вызова http://test.com/object.json чтобы заполнить мои взгляды)
Для документации: 1. предоставить тестовые серверы 2. предоставить cUrl для тестирования 3. предоставить примеры скриптов в java/php/ruby и т. Д.
Это все, что я могу думать сейчас. Я мог бы добавить к этому, поскольку я прихожу с большим предложением.
Я бы рекомендовал взглянуть на RestKit для iOS
- Высокопроизводительный многопоточный сетевой уровень с простым API для запросов / ответов
- Система сопоставления объектов для декларативного сопоставления удаленных полезных нагрузок с локальными объектами (включая отношения)
- Интеграция с Core Data для обеспечения быстрого локального кэша удаленных данных с возможностями синхронизации
- Поддержка генерации исходной базы данных из серии полезных нагрузок JSON.
- Специальная поддержка интеграции с бэкэндами Ruby on Rails (RKRailsRouter)
- Apache лицензирован
- Используется в производстве в ряде превосходных приложений (например, Gate Guru)
Просто добавить в Spring RestTemplate выбор. Вот ссылка для звонков SSL https. Надеюсь, что это помогает другим. Долго искал это решение.
http://www.makeurownrules.com/secure-rest-web-service-mobile-application-android.html