Сгенерировать код для разных типов запросов из конфига
У меня есть приложение, которое делает много запросов на разные URL-адреса. Каждый из них имеет различную структуру запроса и ответа.
Конфигурации типов запросов находятся в базе данных Mysql.
Он содержит следующие данные:
- URL-адрес
- Метод
- Параметры запроса
- Параметры тела
- Заголовки
- Структура ответа
Поэтому, пока я использовал Node.js для этих целей, было легко найти решение для этого.
Но с Go я вижу единственный способ использовать для этого пакет Reflect. Но отражение вредит производительности приложения.
Есть ли простой способ сгенерировать код для этого?
Пример конфигурации запроса:
{
id: 1,
name: "Req1",
url: "http://example.com",
query: [
{name: "user_id", source: "user", value: "id" },
{name: "user_ip", source: "user", value: "ip" },
{name: "token", source: "const", value: "xxx" },
],
headers: [
{name: "Accept-Language", source: "user", value: "language"}
],
body: [
{"name": "user.ua", "user", "ua"}
]
}
Пример пользователя:
{
ip: "127.0.0.1",
id: "123",
ua: "User Agent...",
"language": "en"
}
И в выводе должен быть сделан следующий запрос:
URL: http://example.com?user_id=123&user_ip=127.0.0.1&token=xxx
Headers:
{
Accept-Language: en
}
Body:
{
user: {
ua: "User Agent..."
}
}
В теле может быть использован путь к параметру.
Есть ли инструмент для автоматической генерации кода такого типа?