HTTP 服务
编辑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 服务也在客户端提供,并提供了一个 API,用于通过 HTTP 接口与 Kibana 服务器通信。客户端 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。