SerialBlogger Blog de desarrollo y tecnología

twitter → Probando el priority inbox, una maquinita (y me da la razon sobre que hay que usar gmail web y no por imap!)

Parámetros contextuales, haciendo amable a una API

Esto fue idea de Armando, pero ayudé a implementarlo asi que me siento un poco padre de la criatura, y ademas, es una excelente idea como para que muera en nuestra aplicación y no vea la luz.

No se si alguna vez ustedes intentaron acceder a una API, o si alguna vez crearon una. En el fondo la idea es tener una interface para comunicar distintos sistemas. Cuanto mas simple sea esta interface, mas facil va a ser la comunicacion, ergo mas gente la va a poder usar.

Get Real, nadie lee la documentación

Como toda API, la de Cajabox está siendo documentada (ya tiene nombre y todo, y ojo que el nombre es una pista importante), pero cuanto menos cosas haya que aclarar porque estas son obvias, mejor será, y es por eso que nos tomamos el trabajo de crear este feature o detalle que me gustaria ver en mas lugares.

Cómo trabaja una API

Dije que una API era una comunicacion, por lo tanto lo minimo que vamos a tener es un pedido y una respuesta.

El pedido puede hacerse de muchisimas maneras, a mi la que mas me agrada y mas usable me parece, es hacerlo a travez de la URL, por ejemplo:

http://cajabox.com/api/accion/grande/provolone/false

Lo cual devolvera una respuesta, puede ser desde true o false o algo mas complejo como en el caso de flickr que envia una imagen o set de imagenes.

Incluso en la manera de devolver la respuesta hay muchas variantes, desde CSV, XML o el chico nuevo del barrio, Json (el cual todavia no me acaba de simpatizar).

Pero es en el pedido donde quiero enfocarme, a simple vista no parece dificil. De hecho, es la manera mas simple de todas, llamo a una URL y esta da una respuesta, tal como hacemos todo el tiempo con el navegador.

Pero hay un truco, el orden de los parámetros debe ser siempre ese, sino, puede pasar… lo inesperado. Y sinceramente no me parece muy usable una URL llena de parámetros que, fuera de contexto no tienen sentido.

Cómo hacer para que esto se vuelva mas usable?

Si fuera de contexto no tienen sentido, la respuesta obvia es: darles contexto.

Si se define un nombre para cada parámetro, ganamos dos cosas:

  1. Mas usabilidad porque la URL quedaria llena de parametros definidos.
  2. Mas flexibilidad porque al tener el nombre del parametro, ya no es indispensable el orden.

La URL quedaria entonces asi:

http://cajabox.com/api/accion/tamanio:grande/sabor:provolone/con_aceitunas:false

Como saben, Cajabox esta construido sobre la base del imponderable CakePHP, asi que este snippet seguramente sea liberado en forma de componente para vuestro disfrute.

Y no, Cajabox no es una aplicacion para pizzerias!

Por dfgonzalez en ideas 7 Oct


Comentarios

  1. pecesama
    # - 2006-10-07

    Vaya, parece ser que Cajabox va por muy buen camino :), solo te faltó mencionar que este tipo de API tiene un nombre: REST

  2. Diego
    # - 2006-10-07

    Pero para eso estan ustedes mis queridos comentaristas :D.

  3. Fede
    # - 2006-10-08

    ¿Y cuándo se acaba el misterio? quiero una pista… dale, soy vago, no te voy a robar la idea ;)

    Y no iba a decir nada, pero la palabra interface no existe :P

    Suerte!

  4. Diego
    # - 2006-10-08

    Ya estamos gestionando la revelacion :P.

    Y tenes razon, es interfaz, no interface, nunca me habia fijado!

  5. sosa
    # - 2006-10-08

    Lo que pasa es que todo es parte del marketing. Hacemos el nombre, la API, el logo, el sitio oficial, recogemos los testimonios de los primeros usuarios todo mientras nos decidimos qué es lo que va a hacer cajabox. A mi lo de gestionar pizzerias no me parece tan malo :D

  6. mariano
    # - 2006-10-09

    pero sosa.. las pizzerias no son 2.0 :P

  7. marcoss
    # - 2006-10-09

    no va a tener aceitunas? :(

  8. Juan
    # - 2006-10-10

    hmmmmm…. mucho misterio … mucha intriga … nice!

    Vamos a ver con qué salen despues. Animo!

  9. Diego
    # - 2006-10-11

    Muerte a las aceitunas!!

    #Juan: Ya ta pensado con que seguir! :-D

  10. GNZ
    # - 2007-02-19

    No habia leido este post!
    Te acordas que te pregunte sobre mod_rewrite?
    Bueno, hice un script que hace mas o menos lo que vos decis en este post!, el problema era el orden de los parametros.
    Lo habia hecho con una matriz, con los nombres y orden de cada parametro, dependiendo el script al que se llame.
    Pero me iluminaste con lo de pasarlo de la forma nombre:valor, gracias!!
    Je je je!! Me evito de andar acordandome el orden.

    Saludos.
    Un abrazo!

    PD: Que corno es CajaBox? Para cuando?

Deja tu opinión

Últimas notas

Blogroll

Sponsors