Framework
ApiHug 如何通过契约消除内部与外部之间的鸿沟
为什么契约在内部和外部通信中如此重要?
本质上,ApiHug 所要解决的是 API 的问题,API 是用于不同层级或系统之间通信的一种规范。
换句话说,它就是一种契约:
ApiHug 在设计中广泛使用契约机制:
以上所有功能均基于 ApiHug 的 API 设计元语言:protobuf 构建。
在编译期和运行时阶段,你可以通过 hope.common.service.contract.ContractAdapter
轻松地自定义这些行为。
该适配器提供了以下扩展点以供定制化使用:
函数名 | 备注 |
---|---|
moduleClassName | 当前应用程序 proto 模块的类名。 |
contract | 控制第三方模块(微服务 API 依赖)中暴露的 API 上下文信息。 |
mcp | 基于 API 控制是否暴露 MCP 服务。 |
如何通过 DSL 管理跨应用或 MCP 暴露时的 ApiContext:
instance of
将模块转换为指定的目标模块 //if module instanceof MyModule myModule:
return myModule.service()
.apiContext()
.orderService(
svc -> {
// Keep all the methods of this service
svc.keepAll();
// All the method start with, feel free try other shortcut
svc.startsWith("add");
// Pick method one by one
svc.methods(
methods -> {
// Include this method
methods.PlaceOrder();
// Exclude this method, start with `_`
methods._DeleteOrder();
});
})
.build();