gpt4 book ai didi

php - 在外观中包装 ElasticSearch SDK 以包含有关某些调用的附加信息

转载 作者:搜寻专家 更新时间:2023-10-31 21:26:58 27 4
gpt4 key购买 nike

这需要一些背景知识,所以如果我不够清楚,我深表歉意。

我有一个通过辅助 API 公开的 ES (ElasticSearch) 服务。

辅助 API 负责检查所有权和对内容的访问,这是通过标准 HTTP 授权 和两个标识符 app_codebrand_code 完成的。

我们通过让辅助 API 接受由两个“部分”组成的请求来实现此目的:

  1. 用于所有权和访问验证的两个标识符。
  2. 一个普通的 ES 查询,如果可以验证授权,我们会直接将其传递给我们的 ES 服务。

要求:

{
app_code: mobile,
brand_code: fashion,
query: {
// Standard ES Query
}
}

我们有很多外部开发人员需要使用我们的 ElasticSearch 服务 - 因此我们希望通过提供 SDK 来帮助简化他们的实践。

但是为 ES 开发自定义 SDK 是愚蠢的,因为这已经完成并开源了。因此,我们尝试将当前的 ES SDK 包装在某种“facade-sdk”中,这将简单地在每个请求中包含 app_code 和 brand_code。

然而,这会导致大量维护,因为我们现在必须采用原始 ES-SDK 中的每个方法并将其修改为现在还包含其他两个标识符。

TL:DR - 需要包装另一个 SDK 以便在每个请求中发送额外信息。目前采用外观方法,但最终维护过多。

外墙是正确的做法吗?我们是否可能遗漏了一些更简单的选择,或者这只是一项必要的努力?

最佳答案

通过在 SDK 内构建的每个查询上简单地扩展标识(app_codebrand_code)解决了这个问题。

这是可能的,因为 ElasticSearch SDK 的构建方式基本上是作为常规 HTTP 客户端的包装器,对数据强制执行很少的必需结构。

这意味着我们可以简单地让外部开发人员使用 SDK,并让他们直接使用所需参数扩展数据。

关于php - 在外观中包装 ElasticSearch SDK 以包含有关某些调用的附加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34608347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com