HTTP 服务

编辑

HTTP 服务在服务器端和客户端都可用。

服务器端用法

编辑

服务器端的 HttpService 允许服务器端插件注册端点,并内置对请求验证的支持。这些端点可以被客户端代码使用,或者作为公共 API 向用户公开。大多数插件直接与此服务集成。

该服务允许插件: * 使用自定义 HTTP API 扩展 Kibana 服务器。 * 对传入的请求或服务器响应执行自定义逻辑。 * 实现自定义身份验证和授权策略。

请参阅 HTTP 服务合约类型

import { schema } from '@kbn/config-schema';
import type { CoreSetup, Plugin } from '@kbn/core/server';

export class MyPlugin implements Plugin {
  public setup(core: CoreSetup) {
    const router = core.http.createRouter();

    const validate = {
      params: schema.object({
        id: schema.string(),
      }),
    };

    router.get({
      path: 'my_plugin/{id}',
      validate
    },
    async (context, request, response) => {
      const data = await findObject(request.params.id);
      if (!data) return response.notFound();
      return response.ok({
        body: data,
        headers: {
          'content-type': 'application/json'
        }
      });
    });
  }
}

客户端用法

编辑

HTTP 服务也在客户端提供,并提供一个通过 HTTP 接口与 Kibana 服务器通信的 API。客户端的 HttpService 是 window.fetch 的预配置包装器,它包含一些默认行为并自动处理常见错误(例如会话过期)。该服务仅应用于访问同一插件注册的后端端点。可以随意使用其他 HTTP 客户端库来请求第三方服务。

import { CoreStart } from '@kbn/core/public';
interface ResponseType {…};
interface MyPluginData {…};
async function fetchData<ResponseType>(core: CoreStart) {
  return await core.http.get<MyPluginData>(
    '/api/my_plugin/',
    { query: … },
  );
}

请参阅 客户端 API