Выполнение рекурсивных асинхронных запросов с помощью Play! WSClient

Буду признателен за любые подсказки о том, как делать рекурсивные запросы с помощью WSClient. Я обращаюсь к API REST, который возвращает узлы дерева в формате json, например, это будет корневой узел:

{
  id: "root"
  children:[
    {
      id: "node1"
      children:[...]
    },
    {
      id: "node2"
      children:[...]
    },
    {
      id: "node3"
      children:[...]
    }
  ]
}

Для доступа к каждому узлу шаблон URL-адреса

root/node1/node1-1

Что я хотел бы сделать, так это пройтись по всему дереву и получить некоторую информацию в соответствии с некоторыми критериями.

заранее спасибо


person jorgeb    schedule 26.02.2017    source источник
comment
flatMap это путь. Если говорить более серьезно, вам следует показать, что вы пробовали и где застряли, а не ожидать, что кто-то предложит решение за вас.   -  person rethab    schedule 26.02.2017
comment
Привет, я не прошу кого-то дать мне решение. Именно поэтому я не даю никаких дополнительных подробностей. Пока я могу получить доступ к одному узлу, используя CompletionStage из java8.   -  person jorgeb    schedule 26.02.2017


Ответы (1)


Эта задача похожа на классический обход дерева каталогов.

Я почти уверен, что вы можете сделать это с помощью чистой рекурсии, но использование Akka — более чистый способ сделать это.

Вот примеры:

Использовать актеров akka для обхода дерева каталогов

https://gist.github.com/TheDIM47/8bfa2bbf80e791c00e73

Вы также можете использовать Java, но это более многословно.

person Andriy Kuba    schedule 26.02.2017