Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ehpc/platform-service-bus
Transformation proxy in Go.
https://github.com/ehpc/platform-service-bus
golang proxy
Last synced: 5 days ago
JSON representation
Transformation proxy in Go.
- Host: GitHub
- URL: https://github.com/ehpc/platform-service-bus
- Owner: ehpc
- Created: 2019-09-09T14:23:21.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-10-01T09:41:38.000Z (about 5 years ago)
- Last Synced: 2024-10-30T21:13:10.551Z (about 2 months ago)
- Topics: golang, proxy
- Language: Go
- Size: 17.6 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Как это работает
Данный сервис перенаправляет входящие запросы на указанные адреса,
предварительно сформировав кастомизированный ответ.Сервис описывается следующими сущностями:
- *Конфигурация* - JSON-описание требуемого поведения сервиса.
Конфигурация включает в себя множество адаптеров.- *Адаптер* - сервер, который обрабатывает входящие запросы по заданному порту.
Адаптер включает в себя множество правил.- *Правило* - описание входящих и исходящих запросов.
`Конфигурация ->0..*-> Адаптер ->0..*-> Правило`
Все сущности прописываются в JSON-формате в файле `config/config.json`.
Пример с комментариями:
```
{
"adapters": [
{
"name": "World SMS", // Название адаптера
"port": 8700, // Порт, по которому поднимается сервер для адаптера
"rules": [ // Список правил
{
"from": { // Входящий запрос
"path": "/dlr", // Путь, на который поступает входящий запрос
"http-method": "GET" // HTTP-метод входящего запроса
},
"to": { // Исходящий запрос
"url": "https://httpbin.org/post", // Адрес исходящего запроса
"http-method": "POST", // HTTP-метод исходящего запроса
"headers": [ // Хедеры исходящего запроса
"Content-Type: text/xml"
],
"data-file": "config/world-sms-dlr-to.xml" // Файл шаблона тела исходящего запроса
}
}
]
}
]
}
```# Шаблоны
Для того, чтобы соединить входящий запрос с исходящим, используются шаблоны.
Шаблоны содержат тело исходящего запроса с возможными подставновками.
При отправке исходящего запроса подстановки заменяются реальными данными.Список подстановок:
- *%BODY%* - тело входящего запроса.
- *%QUERY[param1]%* - GET-параметр входящего запроса с имененем *param1*.
- *%REGEX[from>([^<\\s]+)][1]%* - регулярное выражение. Во вторых квадратных
скобках содержится индекс группы. Поддерживаются только регулярные выражения Go:
https://golang.org/pkg/regexp/syntax/.# Сборка проекта
Необходимо выполнить следующие команды:
## Windows
```
make.bat
```## Linux
```
make
```# Запуск
Запускать следует собранный исполняемый файл `platform-service-bus(.exe)`.
## Аргументы командной строки
`-log <имя_файла>` - путь для файла логирования.