Issue #47

0 up
0 down
Closed
noosfero-apps/discussion-app#47
Created by Victor Costa (Edited )

Otimizar acesso a API ao clicar em "propostas"

Ao clicar em propostas está sendo chamado duas vezes o endpoint da API: http://hom.dialoga.gov.br/api/v1/search/article?page=1&per_page=20&type=ProposalsDiscussionPlugin::Proposal

É possível também restringir os campos obtidos (o body do parent das propostas é muito grande). Exemplo: http://hom.dialoga.gov.br/api/v1/search/article?page=1&per_page=20&type=ProposalsDiscussionPlugin::Proposal&fields=abstract)

Assignee: Leonardo Merlin
Milestone: 7.0
4 participants
  • 4a20548511a65cfccc863520b70c3ee9?s=40&d=identicon
    Victor Costa @vfcosta

    O mesmo tratamento pode ser feito na página de ranking.

    Choose File ...   File name...
    Cancel
  • 3c69c5dc92b1406fede16bd008a60253?s=40&d=identicon
    Ricardo Poppi @ricardopoppi

    Milestone changed to 8.0

    Choose File ...   File name...
    Cancel
  • 3c69c5dc92b1406fede16bd008a60253?s=40&d=identicon
    Ricardo Poppi @ricardopoppi

    Milestone changed to 7.0

    Choose File ...   File name...
    Cancel
  • Photo
    Leonardo Merlin @leonardomerlin (Edited )

    TODO:

    • [x] realizar a chamada da API apenas 1 vez no carregamento;
    • [x] restringir os campos necessários;
    Choose File ...   File name...
    Cancel
  • Photo
    Leonardo Merlin @leonardomerlin

    Reassigned to @leonardomerlin

    Choose File ...   File name...
    Cancel
  • Photo
    Leonardo Merlin @leonardomerlin

    Agora que estou trabalhando nessa issue, lembrei dos problemas que tive ao trabalhar com a API. Peço a ajuda de vocês para resolver as dificuldades que vou encontrando.

    Eu preciso dos seguintes dados na página de propostas:

    • abstract: conteúdo da proposta;
    • id, hits, ranking_position, votes_against, votes_count, votes_for;
    • parent.categories - para relacionar a proposta a uma cor do tema;
    • parent.id e parent.slug - para identificar o programa;
    • parent.image.url - para compartilhar a proposta veicula com a imagem do programa

    A URL que montei foi a seguinte:

    http://hom.dialoga.gov.br/api/v1/search//article?fields%5B%5D=id&fields%5B%5D=abstract&fields%5B%5D=hits&fields%5B%5D=ranking_position&fields%5B%5D=votes_against&fields%5B%5D=votes_count&fields%5B%5D=votes_for&fields%5B%5D=parent&fields%5B%5D=categories&fields%5B%5D=slug&fields%5B%5D=url&fields%5B%5D=image&page=1&per_page=20&type=ProposalsDiscussionPlugin::Proposal
    

    Mesmo assim, ainda está trazendo muita coisa (o abstract do parent, por exemplo). Em um teste local, essa chamada custou 22.7Kb.

    @cesarfex @vfcosta, podem me ajudar?

    Choose File ...   File name...
    Cancel
  • 4a20548511a65cfccc863520b70c3ee9?s=40&d=identicon
    Victor Costa @vfcosta

    @leonardomerlin atualmente na API o filtro de campos inseridos no campo fields considera qualquer objeto da hierarquia retornada, ou seja, não tem como retornar especificamente os campos de cada objeto (ex: fields=abstract, fields=parent.categories). Vamos melhorar posteriormente essa seleção de campos de retorno com a atualização da versão do grape.

    Mas parece que já reduziu bastante. Em homologação está custando 171Kb.

    Choose File ...   File name...
    Cancel
  • Photo
    Leonardo Merlin @leonardomerlin

    Maravilha! Então, por enquanto, as requisições podem ser do jeito que fiz ali?! Vou commitar aqui.

    Choose File ...   File name...
    Cancel
  • 4a20548511a65cfccc863520b70c3ee9?s=40&d=identicon
    Victor Costa @vfcosta

    Sim!

  • Photo
    Leonardo Merlin @leonardomerlin

    Status changed to closed by commit 3e7217e89f27ff04b6ab34c66d077b0c1d69f084

    Choose File ...   File name...
    Cancel