Открытая структура для сборки API -шлюзов Ultra Performance с средним уровнем; Ранее известный как Krakend Framework и основное обслуживание Gateway Krakend API.
Потребители контента API REST (особенно в микросервисах) часто задают вопрос о бэкэнд -сервисах, которые не были закодированы для реализации пользовательского интерфейса. Это, конечно, хорошая практика, но потребители пользовательского интерфейса должны выполнять реализации, которые страдают много сложности и бремени с размерами своих ответов микросервисов.
Lura - это строитель API Gateway и генератор прокси, который находится между клиентом и всеми исходными серверами, добавляя новый слой, который удаляет всю сложность клиентам, предоставляя им только информацию, которой нужен пользовательский интерфейс. Lura выступает в качестве агрегатора многих источников в отдельные конечные точки и позволяет группировать, обернуть, преобразовать и сокращать ответы. Кроме того, он поддерживает множество средних вод и плагинов, которые позволяют вам расширять функциональность, такие как добавление авторизации OAuth или уровня безопасности.
Lura не только поддерживает HTTP (S), но и поскольку это набор общих библиотек, вы можете построить все виды API -шлюзов и прокси, в том числе, например, шлюз RPC.
Мобильный разработчик должен построить одну первую страницу, которая требует данных от 4 различных вызовов в свои бэкэнд -сервисы, например:
1) api.store.server/products 2) api.store.server/marketing-promos 3) api.users.server/users/{id_user} 4) api.users.server/shopping-cart/{id_user}
Экран очень прост, и мобильному клиенту необходимо извлечь данные только из 4 различных источников, дождаться поездки об обратном обработке, а затем выберите только несколько полей из ответа.
Что, если мобильный может вызвать одну конечную точку?
1) lura.server/frontpage/{id_user}
Это то, что Лура может сделать для вас. И вот как бы это выглядело:
Lura объединит все данные и возвращает только необходимые вам поля (разница в размере на графике).
Посетите веб -сайт проекта Lura для получения дополнительной информации.
Исходный код для структуры проекта LURA. Он предназначен для работы с вашим собственным промежуточным программным обеспечением и расширить функциональность, используя небольшие, независимые, многократные компоненты после философии UNIX.
Используйте этот репозиторий, если вы хотите построить из исходного вашего шлюза API или если вы хотите повторно использовать компоненты в другом приложении .
Если вам нужен полностью функциональный API -шлюз, вы можете скачать бинар Krakend для вашей архитектуры или построить его самостоятельно.
Проект Lura представлен как библиотека GO , которую вы можете включить в свое приложение Go для создания мощного прокси или API -шлюза. Для получения полного примера проверьте репозиторий Krakend CE.
Конечно, вам нужно будет установить в вашей системе, чтобы скомпилировать код.
Готовный пример использования:
Пакет Mainimport ("flag" "log" "os" "github.com/luraproject/lura/config" "github.com/luraproject/lura/logging" "github.com/luraproject/lura/proxy" "github.com/ luraproject/lura/router/gin ") func main () {port: = flag.int (" p ", 0, «Порт службы») loglevel: = flag.string («l», «ошибка», «уровень ведения журнала») отлад: = flag.bool ("d", false, "включить отладку") configfile: = flag .String ("c", "/etc/lura/configuration.json", "Путь к имени файла конфигурации") flag.parse () parser: = config.newparser () serviceConfig, err: = parser.parse (*configfile), если err! = nil {log.fatal ("error:", err.error ()) } serviceConfig.debug = serviceConfig.debug || *DEBUGIF *PORT! = 0 {serviceConfig.port = *Port} logger, _: = logging.newlogger ( *loglevel, os.stdout, "[lura]") routerFactory: = gin.defaultfactory (proxy.defaultfactory (logger) , logger) routerfactory.new (). run (ServiceConfig) }
Посетите обзор Framework для получения более подробной информации о компонентах проекта Lura.
Файл конфигурации LURA
Проверьте контрольные результаты нескольких компонентов Lura
Мы всегда рады получить взносы. Если у вас есть вопросы, предложения, ошибки, пожалуйста, откройте проблему. Если вы хотите отправить код, создайте проблему и отправьте нам запрос на просмотр.
Читать anpoing.md для получения дополнительной информации.
Следуйте за нами в Твиттере: @luraproject
Посетите наш канал Slack
Прочитайте документацию
Наслаждайся Лурой!