Я пишу пользовательскую директиву в Spray, которая будет управлять ограничением скорости для любого пользовательского запроса.Как получить контекст запроса в пользовательской директиве?
У меня будет LimitManager
где-нибудь, где будут обрабатываться пользовательские лимиты и правила для каждого запроса. Единственной информацией, необходимой для этого LimitManager
, является userInfo
и currentRoute
, то есть разные пределы для разных маршрутов.
Так что, вероятно, в конечном итоге, что-то вроде этого для директивы:
def ensureLimit(): Directive0 =
if (LimitManager.isAuthorized(userInfo, currentRoute)) {
pass
} else {
reject
}
Как я могу получить контекст запроса внутри директивы, так что я могу обеспечить правильную информацию на мой LimitManager
?
Чтобы добавить к ПОМНИТЕ! раздел с расширением мысли, вы можете столкнуться с ситуацией, когда вам нужна ссылка «RequestContext», а также использовать больше директив (а не просто «завершить»). В этом случае вы можете передать объект 'RequestContext' вручную. Например, если вам нужно обрабатывать фьючерсы: 'get {ctx => onComplete (someFutureProducer (ctx)) {...} (ctx)}' – Rich