Развернутый микросервис Krakend Django не получает входные данные, указанные в теле json

У меня есть приложение Django, развернутое с помощью шлюза Krakend. Все конечные точки активны. Но служба не может получить доступ к данным запроса.

Я даю запрос следующим образом

curl --location 'https://backend-dev-url.com/api' \
--header 'Content-Type: application/json' \
--data '{
    "a":"value",
    "b":"value"
}'

Вот ответ, который я получаю

{
      
    "a": [
        "This field is required."
    ],
    "b": [
        "This field is required."
    ]
  
}

Я правильно передаю все недостающие переменные. Но почему-то не доходит до сервиса. На localhost все работает отлично. Проблема только с развернутым экземпляром.

Ниже приведена часть конфигурации krakend для этого микросервиса

{
      "endpoint": "api/v1",
      "method": "POST",
      "output_encoding": "no-op",
      "backend": [
        {
          "url_pattern": "api/v1",
          "encoding": "no-op",
          "sd": "static",
          "method": "POST",
          "host": ["http://localhost:8000"],
          "disable_host_sanitize": false
        }
      ],
      "input_headers": ["Authorization","Content-Type"],
      "extra_config": {
        "qos/ratelimit/router": {
          "max_rate": 100,
          "client_max_rate": 60,
          "every": "1m",
          "strategy": "ip"
        }
      }
    }

Спасибо.

Шлюз не манипулирует и не фильтрует полезную нагрузку, если только вы не добавите компонент, который это делает, поэтому если вы отправляете --data, он достигает сервиса в том виде, в котором он есть. Проблема кроется где-то в другом месте.

Я вижу некоторые несоответствия в переданной вами конфигурации.

  1. В curl вызывается конечная точка /api, но в вашей конфигурации объявлена /api/v1. Таким образом, либо вы вставили сюда неправильную конфигурацию, либо запрос не дойдет до того места, которое вы ожидаете
  2. .
  3. В производстве странно, что приложение Django находится на той же машине, что и KrakenD. Я вижу, что бэкенд указывает на localhost:8000. Если вы используете разные машины или Docker-контейнеры, вы должны обновить этот хост на правильный.
Вернуться на верх