diff --git a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala index 1b235f94..351a20bc 100644 --- a/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala +++ b/backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/api/StubResolver.scala @@ -88,8 +88,11 @@ final class StubResolver(stubDAO: HttpStubDAO[Task], stateDAO: PersistentStateDA mtch <- pattern.findFirstMatchIn(path) } yield pattern.groups.map(g => g -> mtch.group(g)).to(Map) val segments = groups.map(segs => Json.fromFields(segs.view.mapValues(Json.fromString))).getOrElse(Json.Null) + val headerJsonMap = Json.fromFields(headers.view.mapValues(Json.fromString)) computeStateSpec( - stubc.state.map(_.fill(Json.obj("__query" -> queryObject, "__segments" -> segments))), + stubc.state.map( + _.fill(Json.obj("__query" -> queryObject, "__segments" -> segments, "__headers" -> headerJsonMap)) + ), bodyJson, bodyXml ) diff --git a/readme.md b/readme.md index 31885647..c6d8f7cb 100644 --- a/readme.md +++ b/readme.md @@ -135,7 +135,7 @@ State аккумулятивно дописывается. Разрешено п ## Поиск state Предикаты для поиска state перечисляются в блоке `state`. Пустой объект (`{}`) в поле state недопустим. -Для поиска state можно использовать данные запроса (без префикса), query параметры (префикс `__query`) и значения, извлекаемые из URL (префикс `__segments`) +Для поиска state можно использовать данные запроса (без префикса), query параметры (префикс `__query`), значения, извлекаемые из URL (префикс `__segments`) и HTTP заголовки (префикс `__headers`) Пример: @@ -143,7 +143,8 @@ State аккумулятивно дописывается. Разрешено п { "_a": "${fieldB}", //поле из тела запроса "_b": "${__query.arg1}", //query параметр - "_c": "${__segments.id}" //сегмент URL, см. `Экстрация данных из URL` + "_c": "${__segments.id}", //сегмент URL, см. `Экстрация данных из URL` + "_d": "${__headers.Accept}" //HTTP заголовок } ```