Pergunta

Eu estou pensando em usar Pouco.ly Pro e o Bit.ly API para fazer a minha própria urls curtas no Rails 3 projeto.

Eu já tenho um Usuário e uma Nota de modelo.E uma estrutura de url como esta:'nome de utilizador //1-nota-título'.

Agora eu gostaria de dar a cada nota um url.Mas eu não sei de onde eu deveria fazer a chamada da API.Agora eu tenho esse código na Nota controlador, mas eu não sei se é o lugar certo, ou como se o url da nota...

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"]

O objeto JSON estrutura apenas para a referência:

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

Quis ajudar, obrigado antecipadamente!

Foi útil?

Solução

Me parece que a url curta deve obter criados quando uma nova nota é criada para um determinado usuário.Em que contexto isso iria acontecer como resultado de uma create ação no NotesController (normalmente).As melhores práticas sugerem que a lógica responsabilidade deve viver a Note o modelo, então eu sugiro que você faça o bit.ly encurtamento implementado em um retorno de chamada, antes ou depois, dependendo de como é crítico (no contexto de sua aplicação em particular) para um URL abreviado para existir.

O desafio é fazer negócio com o caso de erro, que é quando o bit.ly o serviço é incapaz de responder ao seu encurtamento solicitação ou está demorando demais ao fazê-lo.É quando colocá-lo no retorno de chamada pode não fazer sentido como potencialmente poderia ocupar o seu aplicativo ao tentar satisfazer o pedido.

Se você não precisa de ao vivo Abreviação de URL, então você pode considerar a criação de encurtamento de pedidos na fila de postos de trabalho numa processo de plano de fundo para ser feita de forma assíncrona (repetir se necessário) e ser acionado no referido after_save de retorno no seu Note modelo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top