Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Respondendo em JSON

É uma dúvida simples, mas não achei nada que me arientasse quanto a isso:

Tenho uma Rest API e consulto uma lista de livros e esses livros possuem categorias.

Como trato essas categorias:

1) Coloco como paramentro aí tem que ser feita uma requisição pra cada categoria que eu quero inclusive a lista de categoria.

2) Mando tudo e me viro pra separar na parte estática.

3) Coloco uma url pra trazer esse json formatado (se essa for uma opção valida como faço isso).

8 respostas
solução!

Oi Ayla, tudo bem? A primeira e a última opção me parecem ser as melhores.

Para a última, você pode retornar um json no seguinte formato:

[{
"programacao":  [
    { objeto livro 1},
    { objeto livro 2},
],
"design" : [
    { objeto livro 1},
    { objeto livro 2},
]
}]

Um array onde tem um objeto onde cada chave do objeto representa uma categoria. Cada categoria trás uma série de objetos que são seus livros. Pegou a ideia?

Claro que essa é apenas uma ideia. Podemos discutir outras.

Oi Ayla, acho que não ficou claro para mim, então vou chutar umas respostas.

1) Se você quer ter um endpoint que traz livros de várias categorias, o melhor é receber os ids como argumento de uma querystring normal. ?id=1&id=2&id=3

2) Se você quer listar os livros de determinada categoria, aí você pode fazer com que o id faça parte da url. /categoria/1/livros por exemplo.

Entendi!

Mas seguindo o que vc disse como eu monto esse JSON?


/*Reserva tem reserva.id , reserva.titulo, reserva.sala_id  quero deixar categorizado por salada */
app.get("/reservas",function(req, res) {

    var connection = app.persistencia.connectionFactory();
    var reservaDao = new app.persistencia.ReservaDao(connection);
    reservaDao.lista(function(exception, resultado){
      console.log('reserva criado: ' + resultado);
      res.setHeader('Access-Control-Allow-Origin','*');

/*Aqui eu travo: busco no banco as categorias aqui e monto esse array ou a partir desse resultado eu consigo algo*/

      var response = {
        reservas: resultado
      }
      res.status(201).json(response);
    }) ;

  });

Espera, é esse exemplo mesmo? Você pediu ajuda em relação a livros e categorias, mas os comentários no seu código mostra que é uma lógica de reserva de salas.

Sim! É de reserva de salas o projeto que tô fazendo.. .dei exemplo do livro inicialmente, pq é mais comum nos cursos aqui. O problema é que eu não sei manipular esse resultado aí... dentro uma busca das salas e aí entro em um loop?

Entendi, mas tenta não usar exemplos assim por causa do que é comum nos cursos tá bem? Tenta explicar exatamente o cenário que você está desenvolvendo, assim a gente tenta focar na solução do seu problema diretamente.

Pelo que entendi, são reservas de salas e cada sala tem uma categoria, é isso? Baseado nisso, você quer retornar um json organizando as salas por categoria?

Foi mal na próxima não erro.

A app vai ser assim:

Cidades possuem salas que possuem reservas.

Tô pensando em fazer assim:

/reservas/include={cidades,salas}

[{
"Reservas":  [
    { objeto reserva 1},
    { objeto reserva 2},
],
"Salas" : [
    { objeto sala 1},
    { objeto sala 2},
],
"Cidades" : [
    { objeto cidade 1},
    { objeto cidade 2},
]

}]

Depois de pesquisar um pouco sobre JSON API

Se cidades possuem salas e salas reservas, talvez o mais simples seja fazer como o Alberto comentou Ayla.

Ao acessar /cidades, você retorna todas as cidades. Ao acessar /cidades/1, você retorna todas as salas da quela cidade, e quando acessar, /cidades/1/2, você retorna todas as reservas daquela sala, naquela cidade.

Se bem que usar /1 e /1/2 não é uma boa prática, mas sim, usar talvez o nome da cidade. Já a sala, pode ter nome ou não, assim teria: /cidades/sao-paulo/1, assim estou acessando a sala 1 na cidade de são paulo e vendo todas as reservas.

Não acha melhor assim? Aliás, desculpe a demora