2010-11-04 21 views
11

Mi empresa es revisada en su API y quiere hacer todo bien para este tiempo;) esa es la configuración ...RESTful frameworks para Android, iOS ...?

  • Estamos entregando datos a los clientes en internet.
  • Los clientes son los teléfonos móviles como iPhone, androides, J2ME, Blackberry ...
  • El servidor está codificada en Ruby on Rails

Queremos lograr a través de un marco ...

  • Utilice ActiveResource en los clientes.
  • El marco debe hacer la conexión (REST), el análisis y (dinámicamente) el suministro de los modelos
  • La licencia debe ser de código abierto.
  • Se incluirá la autorización. Usamos OAuth y necesitamos entregar el token de acceso en cualquier solicitud. ¿Tal vez como parámetro o en el encabezado HTTP?
  • Compatibilidad con HTTPS/SSL
  • Paginación y relaciones (con carga diferida) la compatibilidad sería genial. De otro modo, el marco debe ser capaz de ajustarse para estas cosas.

Ya hemos encontrado siguientes marcos y rogamos chicos para evaluarlas. Tal vez uno de ustedes utilizaron algunos de ellos o algo diferente ...


  • Android: RESTProvider from Novoda/Carl-Gustaf Harroch

    • Los proveedores ofrecen una abstracción a partir de fuentes de datos en Android y el RESTProvider analiza automáticamente las respuestas del API REST en un proveedor. RESTProvider es una implementación de todas las funcionalidades comúnmente reimplantadas cuando se trata de servicios web en Android. Los usuarios pueden interactuar sin problemas con cualquier API de servicios web que proporcione JSON o XML como respuesta. Para consultar un RESTProvider en una actividad, un usuario solo necesita especificar un punto final y luego consultar las funciones RESTful de una API. RESTProvider también maneja todas las consultas HTTP & caché.
    • No has encontrado mucha documentación aparte de eso
    • Proporciona almacenamiento en caché, así está previsto
    • lanzamiento + Documentación para principios de 2011

  • iOS: http://iphoneonrails.com/

    • Lib para la comunicación entre iOS y rieles
    • REST y "ActiveResource" basados ​​en
    • incluye XML/JSON Analizador
    • licencia libre
    • paginación ?, androide ?, carga lenta?


  • Android: Spring Android Rest Template Module
    • RestTemplate de primavera es un sistema robusto, popular cliente de REST basado en Java. El Módulo de plantilla de descanso de Android de Spring proporciona una versión de RestTemplate que funciona en un entorno Android.


  • Android: Feed Framework
    • com.google.android.feeds
    • Una colección de clases para ayudarlo a crear proveedores de contenido. El marco está especialmente diseñado para ayudar a conectar su aplicación a las API web.
+2

Después de un largo momento de la evaluación, se decidió escoger "Primavera Android Módulo Plantilla Resto" ahora. – OneWorld

Respuesta

11

yo soy el autor de la RESTProvider. Todavía es una etapa muy temprana, así que no recomendaría usarlo en producción. Lo he estado utilizando en varios proyectos que están en producción, pero he adaptado la mayoría del código a las necesidades específicas. Intentaré obtener una API pública estable antes de fin de año.

En lo que respecta a volver a trabajar la API, sugeriría lo siguiente: la compresión

  1. Uso GZip
  2. Uso ETags para almacenar en caché
  3. utilizar las normas sin modificación (vi casos en los que la denominación cambió de oauth_token to my_token que hace que la mayoría de las bibliotecas sean inútiles sin modificaciones) - OAuth/REST
  4. Utilice la marca de tiempo de creación/modificación e identificadores remotos para todos los objetos para habilitar el lado del cliente de caché (cláusulas de conflicto SQLite): {"m yobject ": {" createdAt ": xxxx," rid ":" hashvalue "}} 4a. Utilice una buena manera de identificar el objeto devuelto por el usuario/actividad/aplicación: utilice OpenSocial "ID de aplicación" + "ID de usuario" + "actividad id"
  5. Prefiero JSON sobre XML
  6. Prefiero simplicidad (profundidad bajo posible)
  7. devolver el objeto completo con la relación de uno a muchos dentro de ese objeto: { "padre": .... "tiene": { "objeto completo no sólo el ID"}}
  8. no vuelven IDs solamente ("categoría": [2,3,4] debe ser "categoría": [{"nombre": "prueba", "id": 2}, {"nombre": "producción", "id": 3}})
  9. Considere cada ca ll ser independientes el uno del otro (es decir Que debería tener suficiente información para la llamada http://test.com/object.json para poblar mis puntos de vista)

Para obtener documentación: 1. proporcionan servidores de prueba 2. Proporcionar rizo para probar 3. proporcionan scripts de ejemplo en Java/PHP/Ruby, etc ..

Eso es todo lo que puedo pensar por ahora. Podría agregar algo sobre esto ya que vengo con más sugerencias.

+0

Re punto 8 (y principios generales de REST): Asegúrese de que cada 'cosa' esté identificada de forma única y que sea accesible a través de una URL. La URL (localizador de recursos UNIQUE) se puede usar como ID de los objetos. –

+0

hola, por lo que es lo suficientemente estable aún, tengo la intención de usarlo en un proyecto. –

5

te recomiendo echar un vistazo a RestKit for iOS

  • alto rendimiento, capa de red roscado con un API simple para solicitar respuestas/
  • sistema de mapeo de objetos para la asignación de cargas remotas en objetos locales declarativos (incluyendo las relaciones)
  • Integración con Core Data para proporcionar una memoria caché local rápida de datos remotos con capacidades de sincronización
  • Soporte para generar una base de datos semilla a partir de una serie de cargas JSON
  • apoyo específico para la integración con Ruby on backends carriles (RKRailsRouter)
  • Apache licencia
  • utilizados en la producción en un número de excelentes aplicaciones (es decir, Gate Guru)
+0

Estoy usando RestKit para iOS en varios de mis proyectos. Siempre se desempeña a la altura de las expectativas. – Umair