elasticsearch,sdk,facade,Php,Api,elasticsearch,Sdk,Facade" /> elasticsearch,sdk,facade,Php,Api,elasticsearch,Sdk,Facade" />

Php 在facade中包装ElasticSearch SDK,以包含有关某些调用的附加信息

Php 在facade中包装ElasticSearch SDK,以包含有关某些调用的附加信息,php,api,elasticsearch,sdk,facade,Php,Api,elasticsearch,Sdk,Facade,这需要一点背景知识,所以如果我不够清楚,我很抱歉 我有一个ES(ElasticSearch)服务,它通过辅助API公开 辅助API负责检查内容的所有权和访问权,这是通过标准的HTTP授权和两个标识符来完成的,一个是app\u代码,一个是brand\u代码。 我们通过让辅助API接受由两个“部分”组成的请求来实现这一点: 用于所有权和访问验证的两个标识符 正常的ES查询,如果可以验证授权,则直接传递给ES服务 请求: { app_code: mobile, brand_code:

这需要一点背景知识,所以如果我不够清楚,我很抱歉

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

辅助API负责检查内容的所有权和访问权,这是通过标准的
HTTP授权
和两个标识符来完成的,一个是
app\u代码
,一个是
brand\u代码。

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

  • 用于所有权和访问验证的两个标识符
  • 正常的ES查询,如果可以验证授权,则直接传递给ES服务
  • 请求:

    {
        app_code: mobile,
        brand_code: fashion,
        query: {
            // Standard ES Query
        }
    }
    
    我们有很多外部开发人员需要使用我们的ElasticSearch服务,因此我们希望通过提供SDK来帮助简化他们的实践

    但是为ES开发定制SDK是愚蠢的,因为这已经完成,并且是开源的。因此,我们尝试将当前的ES SDK封装在一个“facade SDK”中,它只包含每个请求的app_代码和brand_代码

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

    TL:DR-需要包装另一个SDK,以便在每个请求中发送附加信息。目前采用门面方法,但最终维护工作量过大。


    正面是正确的方法吗?我们可能遗漏了一些更简单的选项,还是仅仅是一项必要的工作?

    通过在SDK内部构建的每个查询上简单地扩展标识(
    app\u code
    brand\u code
    )来解决这个问题

    这是可能的,因为ElasticSearchSDK的构建方式,基本上是作为常规HTTP客户机的包装器,在数据上实施的所需结构很少

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