Обертывание 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 для отправки дополнительной информации с каждым запросом. В настоящее время используется фасадный подход, но в итоге требуется слишком много обслуживания.

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

3

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector