Как получить данные URL для использования с server.inject в режиме dev? - PullRequest
0 голосов
/ 17 сентября 2018

Kibana v6.2.4

В режиме разработки URL Kibana содержит случайное слово, которое изменяется после перезапуска, например, poj слово здесь

http://localhost:5601/poj/app/myplugin#/?_g=()

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


В моем плагине Kibana я использую server.inject()

async function logData(attributes) {
  const resp = await server.inject({
    method: 'PUT',
    url: '/api/myplugin/alarm',
    headers: {
      'kbn-xsrf': 'reporting',
    },
    payload: {
      attributes,
    },
  });

  ... do stuff
}

для запроса маршрута API плагина из кода сервера

  server.route({
    method: ['PUT'],
    path: '/api/myplugin/alarm/{id?}',
    config: {
      validate: {
        params: {
          id: Joi.string(),
        },
        payload: {
          attributes: Joi.object().required(),
        },
      },
    },
    handler: async function (req, reply) {
    ... do stuff

И это работает, когда я запускаю Kibana в обычном режиме. Но когда я запускаю его в режиме разработки cd kibana && npm start, я получаю необработанный ответ с 404 Not Found в заголовке:

{ raw:
   { res:
      Response {
        domain: [Object],
        ...
        socket: [Object],
        connection: [Object],
        _header: 'HTTP/1.1 404 Not Found\r\nkbn-name: kibana\r\nkbn-version: 6.2.4\r\ncontent-type: application/json; charset=utf-8\r\ncache-control: no-cache\r\ncontent-length: 38\r\nDate: Mon, 17 Sep 2018 16:32:02 GMT\r\nConnection: keep-alive\r\n\r\n',

Я понимаю, это потому, что у меня нет случайного слова в server.inject() URL.

Важное обновление

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

...