передача ответа на последовательный запрос (HTTP_GET -> HTTP_POST) - PullRequest
0 голосов
/ 12 мая 2019

У меня есть микросервис, который выводит следующее в качестве ответа.Это запрос HTTP_GET, который обслуживает http://localhost:8050/location?company=5

curl -X GET http://localhost:8050/location?company=5
{
    "locations": [
        { "key": "1050", "lat": 24.000000000, "lon": 46.000000000 },
        { "key": "1254", "lat": 24.999999999, "lon": 46.999999999 }
    ]
}

. У меня также есть запрос HTTP_POST, который принимает список ключей и возвращает соответствующие данные ветви.он работает на http://localhost:8060/branches и принимает массив json.

curl -X POST http://localhost:8060/branches -H 'Content-Type: application/json' -d '["1050","1254"]'

, и результат будет

{
    "branches": [
        { "key": "1050", "branch_name": "DC", "telephone": "+1 11 111 111" },
        { "key": "1254", "branch_name": "LA", "telephone": "+1 22 222 222" }
    ]
}

, и мне нужен окончательный объединенный вывод, как указано ниже

{
    "branches": [
        { "key": "1050", "branch_name": "DC", "telephone": "+1 11 111 111" },
        { "key": "1254", "branch_name": "LA", "telephone": "+1 22 222 222" }
    ],
    "locations": [
        { "key": "1050", "lat": 24.000000000, "lon": 46.000000000 },
        { "key": "1254", "lat": 24.999999999, "lon": 46.999999999 }
    ]
}

Я разрабатываю API-шлюз с использованием krakend, и он будет выполнять все вышеперечисленное и обслуживает http://localhost:8080/findBranches?company=2
Вот мой krakend-config.json

{
    "version": 2,
    "extra_config": {},
    "timeout": "3000ms",
    "cache_ttl": "300s",
    "output_encoding": "json",
    "name": "sample",
    "endpoints": [
      {
        "endpoint": "/findBranches",
        "method": "GET",
        "extra_config": {
          "github.com/devopsfaith/krakend/proxy": {
            "sequential": true
          }
        },
        "headers_to_pass": [ "*" ],
        "querystring_params": [ "company" ],
        "output_encoding": "json",
        "concurrent_calls": 1,
        "backend": [
          {
            "url_pattern": "/location",
            "encoding": "json",
            "method": "GET",
            "host": [ "http://localhost:8050" ],
            "disable_host_sanitize": true
          },
          {
            "url_pattern": "/branches",
            "encoding": "json",
            "method": "POST",
            "host": [ "http://localhost:8060" ],
            "disable_host_sanitize": false
          }
        ]
      }
    ]
}

Как мне манипулировать ответом1-й бэкэнд и отправить его на почту запросом второго?

...