Обертывание ElasticSearch SDK в фасаде, чтобы включить дополнительную информацию о некоторых вызовах

Это требует немного базовых знаний, поэтому я прошу прощения, если я не достаточно ясно.

У меня есть сервис ES (ElasticSearch), который предоставляется через вторичный API.

Вторичный API отвечает за проверку владения и доступа к контенту, это делается через стандартный HTTP Authorization и два идентификатора app_code и brand_code.

У нас это реализовано, когда вторичный API принимает запрос, состоящий из двух "частей":

  1. Два идентификатора используются для владения и проверки доступа.
  2. Обычный запрос ES, который мы передаем напрямую в наш сервис ES, если авторизация может быть подтверждена.

Запрос:

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

У нас есть много внешних разработчиков, которым необходимо использовать наш сервис ElasticSearch - так как мы хотим помочь упростить их практику, предоставляя SDK.

Но было бы глупо разрабатывать собственный SDK для ES, так как это уже было сделано и с открытым исходным кодом. Поэтому мы попытались обернуть текущий ES SDK в своего рода "фасад-SDK", который бы просто включал в каждый запрос app_code и brand_code.

Это, однако, приводит к значительному обслуживанию, поскольку теперь нам нужно взять каждый метод в исходном ES-SDK и изменить его, чтобы теперь также включать в себя два других идентификатора.

TL: DR - необходимо обернуть другой SDK для отправки дополнительной информации с каждым запросом. В настоящее время используется фасадный подход, но в итоге требуется слишком много обслуживания.

Являются ли фасады правильным способом? Возможно, мы упускаем какой-то более простой вариант или это просто необходимое усилие?

1 ответ

Решение

Решил этот вопрос, установив (app_code а также brand_code) просто распространяется на каждый запрос, встроенный в SDK.

Это стало возможным благодаря тому, что был создан ElasticSearch SDK, в основном как обертка для обычного HTTP-клиента, обеспечивающего очень мало необходимой структуры данных.

Это означало, что мы могли просто попросить внешних разработчиков использовать SDK и напрямую дополнить данные требуемыми параметрами.

Другие вопросы по тегам