Kong API Gateway - чтение тела запроса в пользовательском плагине - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь прочитать тело запроса в пользовательском плагине, выполнив этот URL

  local data = kong.request.get_body()
  if data then
      kong.log(data)
  end

Я получаю следующую ошибку

2019/03/14 21:57:55 [error] 14039#0: *45 lua entry thread aborted: runtime error: /usr/local/share/lua/5.1/kong/pdk/private/phases.lua:66: no phase in kong.ctx.core.phase
stack traceback:
coroutine 0:
        [C]: in function 'error'
        /usr/local/share/lua/5.1/kong/pdk/private/phases.lua:66: in function 'check_phase'
        /usr/local/share/lua/5.1/kong/pdk/request.lua:594: in function 'get_body'
        .../Apps/troop/kong/plugins/customlog/handler.lua:72: in function <.../Apps/troop/kong/plugins/customlog/handler.lua:62>, context: ngx.timer, client: 127.0.0.1, server: 0.0.0.0:8000
Can anyone help me understand the problem here? I need to log the request body in my plugin.

Может кто-нибудь помочь мне понять проблему здесь? Мне нужно зарегистрировать тело запроса в моем плагине.

1 Ответ

0 голосов
/ 29 апреля 2019

Этот вызов может быть вызван только на этапе «перезапись, доступ или admin_api».

Если посмотреть на вывод журнала, контекст, который вы пытаетесь назвать, - это ngx.timer , который даже Конг не рассматривает как один из его контекстов.(Подробнее об этом здесь )

То, что вы можете сделать, это вызвать "kong.request.get_body ()" в фазе, которая может вызвать его, сохранить его во временном var (используя "kong.ctx.plugin "), а затем используйте его в фазе" log "для указанного плагина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...