Como posso chamar APIs de terceiros no Discourse

Olá,

Estou me perguntando se existe alguma maneira de chamar uma API personalizada de terceiros criada em Node.js no Discourse.

Agradecemos seu feedback.

Obrigado.

Não deve importar em qual linguagem a API foi escrita, desde que toda a interação ocorra via HTTP.

Provavelmente, você precisará escrever algumas chamadas AJAX em JavaScript em um Componente de Tema ou, se for apropriado, fazer chamadas HTTP em algum novo código de Plugin que você escrever em Ruby, usando uma biblioteca Ruby adequada, como Excon ou Httparty.

1 curtida

Obrigado pela resposta, @merefield. Agradeço seu feedback.

Sou novo no desenvolvimento do Discourse. Anteriormente, trabalhei no NodeBB, um CMS de comunidade baseado em Node.js. Lá, fiz muitas personalizações (criei uma API personalizada para buscar dados de tickets do Zoho, recuperei listas de vídeos do Vimeo, entre outras coisas). Então, quero fazer o mesmo ou preciso criar as mesmas API(s) nele e renderizar os dados de resposta em algumas páginas estáticas para o usuário.

Obrigado.

Use o backend para fazer a chamada:

  • se você precisar que isso seja seguro,
  • se precisar que o backend processe o resultado,
  • se a(s) chamada(s) puderem ser de longa duração.

Se for de longa duração, coloque em um Job.

Isso exigirá algum Ruby em um Plugin e uma das gems mencionadas acima.

Não é necessariamente tão fácil entrar no desenvolvimento de plugins do Discourse; é uma plataforma grande, complexa e com opiniões próprias, mas há bons guias oficiais aqui e MUITOS plugins de código aberto existentes para analisar (veja #plugin e links para o GitHub). Tente encontrar um que faça algo semelhante e veja como isso é resolvido no código.

Se for superficial, considere um Componente de Tema. Consulte os Guias de Desenvolvimento de Temas aqui.

Veja exemplos, como este: discourse-tc-quote-of-the-day/get-quote.js.es6 na master · merefield/discourse-tc-quote-of-the-day (github.com)

3 curtidas

Ok @merefield, estou investigando. Agradeço seu feedback.

1 curtida