Pregunta

Estoy pensando en usar Bit.ly Pro y Bit.ly API para crear mis propias URL cortas en un proyecto Rails 3.

Tengo un modelo de Usuario y de Nota.Y una estructura de URL como esta:'/nombre de usuario/1-nota-título'.

Ahora me gustaría darle a cada nota una URL corta.Pero no sé desde dónde debo hacer la llamada a la API.En este momento tengo este código en el controlador de Notas, pero no sé si ese es el lugar correcto o cómo obtener la URL de la nota específica...

url = ???

parsed_json = JSON('http://api.bit.ly/v3/shorten?login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&longUrl=' + url + '&format=json')

@short_url = parsed_json["data"]["url"]

La estructura del objeto JSON solo como referencia:

{
  "status_code": 200, 
  "data": {
    "url": "http://bit.ly/cmeH01", 
    "hash": "cmeH01", 
    "global_hash": "1YKMfY", 
    "long_url": "http://betaworks.com/", 
    "new_hash": 0
  }, 
"status_txt": "OK"
}

Se busca ayuda, ¡gracias de antemano!

¿Fue útil?

Solución

Parece que la URL corta debería crearse cuando se crea una nueva nota para un usuario determinado.En ese contexto sucedería como resultado de una create acción en el NotesController (típicamente).Las mejores prácticas sugerirían que la responsabilidad lógica debería vivir la Note modelo, así que te sugiero que hagas el bit.ly acortamiento implementado en una devolución de llamada guardada, ya sea antes o después, dependiendo de qué tan crítico sea (en el contexto de su aplicación particular) que exista una URL acortada.

El desafío es lidiar con el caso de error, que es cuando el bit.ly El servicio no puede responder a su solicitud de reducción en absoluto o está tardando demasiado en hacerlo.Es entonces cuando ponerlo en la devolución de llamada puede no tener sentido, ya que podría bloquear su aplicación al intentar cumplir con la solicitud.

Si no necesitas vivir Acortamiento de URL, entonces podría considerar crear solicitudes de acortamiento como trabajos en cola en un proceso en segundo plano se realizará de forma asincrónica (reintentando según sea necesario) y se activará en el modo antes mencionado. after_save devolución de llamada en tu Note modelo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top