Правильный подход к получению данных JSON от нескольких конечных точек REST - PullRequest
0 голосов
/ 01 апреля 2019

Итак, я пытаюсь определить, как лучше всего получить / проанализировать данные JSON из существующего веб-API.

Я имею в виду следующую конечную точку:

https://example.com/api/projects (не реально)

, который возвращает структуру JSON в следующем виде:

{
    "count": 4424,
    "results": [
        {"id": 2718, "name": "fox", "location": "Omaha"}, 
        {"id": 2719, "name": "bear", "location": "Miami"}
    ]
}

Затем мне нужно получить список этих значений идентификатора, чтобы получить JSON из последующегоконечная точка, которая использует идентификатор проекта:

https://example.com/api/projects/[id]/resources (не реально)

и возвращает JSON в виде:

{
    "quota_cpus": 2,
    "active_cpus": 1,
    "quota_memory": 16384,
    "active_memory": 0
}

Что я думалбыло то, что я использовал OKHTTP3, чтобы сделать вызов REST, чтобы получить идентификаторы проекта и сохранить их в Java-объекте Project.

Затем я собирался пройтись по списку и сделать еще один вызов REST, чтобы получить списокресурсов для каждого отдельного проекта и сохраните его в новом объекте под названием ProjectResources.

Мои вопросы:

  • Похоже ли это на правильный подход?
  • Какие лучшие альтернативы вы бы предложили?
  • А мне делать эти синхронные или асинхронные вызовы?

1 Ответ

1 голос
/ 04 апреля 2019

Вот ответы на ваши запросы,

Похоже, это правильный подход?

Если вам просто нужны идентификаторы из первого ответа на вызов, сохраните их в спискевместо проекта

.

Какие лучшие альтернативы вы бы предложили?

Поскольку второй вызов зависит от количества идентификаторов, возвращаемых после первого вызова, лучше, если вы сделаете асинхронные вызовы, которые улучшат время выполнения.

Но, если у вас есть разрешение на изменение второй конечной точки, я бы посоветовал сделать так, чтобы она принимала несколько идентификаторов.

И делать ли эти синхронные или асинхронные вызовы?

Вы можете использовать асинхронный вызов.(Например, используя ExecutorServvice)

...