Как быть привязанным к жизненному циклу REST в haproxy - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу направить все запросы для данного ресурса на один и тот же сервер. Если ресурс создан на сервере, все последующие запросы должны быть направлены на один и тот же сервер.

Быть прикрепленным к URL-адресу не проблема, но как мне заполнить таблицу-стик из первого ответа?

Пример:

Запрос: POST / resources

{
  "value": "bla"
}

Ответ:

{
  "id": "1234",
  "value": "bla"
}

GET / resources / 1234

{
  "id": "1234",
  "value": "bla"
}

Второй запрос должен быть направлен на тот же сервер, который обработал первый запрос , Есть ли способ сделать это с помощью haproxy?

1 Ответ

0 голосов
/ 22 апреля 2020

Наконец-то нашел решение, которое работает. Я публикую это, если кто-то еще заинтересован в решении. Соответствующие строки приведены в разделе backend:

    acl recources_path capture.req.uri,field(1,?) /resources

    stick-table type string len 10 size 5M
    stick match capture.req.uri,field(3,/) 
    # trying to parse the id out of the post response
    stick store-response res.payload(0,0),field(2,{),field(4,\") if METH_POST recources_path

Особенно анализ тела ответа, по-видимому, не предназначен для использования haproxy. Добавление заголовка ответа с идентификатором ресурса значительно облегчает работу с ситуацией.

...