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。