Domanda

Sto pensando di usare Bit.ly Pro e il bit.ly API per creare i miei brevi URL in un progetto di rotaia 3.

Ho un utente e un modello di nota.E una struttura dell'URL come questa: '/ Nome utente / 1-note-Titolo'.

Ora vorrei dare a ciascuna nota un breve URL.Ma non so da dove dovrei fare la chiamata API.In questo momento ho ricevuto questo codice nel controller nota, ma non so se è il posto giusto o come ottenere l'URL della nota specifica ...

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 struttura dell'oggetto JSON solo per riferimento:

{
  "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"
}
.

Aiuto desiderato, grazie in anticipo!

È stato utile?

Soluzione

Sembra che l'URL breve sia creato quando viene creata una nuova nota per un determinato utente. In tale contesto sarebbe successo come risultato di un'azione create nel NotesController (in genere). La migliore pratica suggerirebbe che la responsabilità logica dovrebbe vivere il modello Note, quindi ti suggerirei di eseguire l'accorciamento bit.ly implementato in un callback di salvataggio, prima o dopo, a seconda di quanto sia critico (nel contesto della tua particolare app) per A URL accorciato per esistere.

La sfida è gestita con il caso di errore quando il servizio bit.ly non è in grado di rispondere alla tua richiesta di accorciamento o sta prendendo troppo a lungo in modo da fare. Questo è quando lo metti nel callback potrebbe non avere senso in quanto potrebbe potenzialmente legare la tua applicazione quando si tenta di soddisfare la richiesta.

Se non è necessario Live Shortening URL, è possibile prendere in considerazione la possibilità di creare richieste di accorciamento come lavori in coda in un Processo di sfondo da eseguire in modo asincrono (riprovare secondo necessità) ed essere attivato nella suddetta richiamata after_save nel modello Note

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top