如何在开发模式下获取与server.inject一起使用的URL数据?

时间:2018-09-17 16:56:33

标签: node.js kibana hapijs

Kibana v6.2.4

在开发模式下,Kibana URL包含一个随机单词,该单词会在重启后更改,例如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()网址中没有随机词。

重要更新

问题中的示例有效!问题是在我的真实代码中,我在路线中使用了错误的路径。

0 个答案:

没有答案