16 lines
1.5 KiB
Markdown
16 lines
1.5 KiB
Markdown
|
# httpgauge
|
|||
|
|
|||
|
Напишите middleware, считающий метрики числа запросов. Обычно, метрики измеряют
|
|||
|
с помощью библиотеки [prometheus](https://github.com/prometheus/client_golang).
|
|||
|
|
|||
|
Но мы будем писать упрошённую версию, которая будет хранить метрики в `map[string]int`.
|
|||
|
|
|||
|
Ключём в такой `map` можно было бы сделать `Path` запроса, но это не очень хорошее решение.
|
|||
|
В пути часто встречаются изменяемые параметры. Например `/user/0`, `/user/1`, etc. В этом случае,
|
|||
|
мы не хотим отдельно измерять, что пришло 5 запросов к `/user/0` и 10 запросов к `/user/1`.
|
|||
|
В этом случае, для мониторинга за сервером нам нужно знать, что пришло 15 запросов к пути `/user/{userID}`.
|
|||
|
|
|||
|
Чтобы получить такой паттерн (`/user/{userID}`) вместо полного пути, нужно использовать библиотеку-роутер.
|
|||
|
Стандартная библиотека такого не умеет. В этой задаче мы будем использовать библиоетку [chi](https://github.com/go-chi/chi).
|
|||
|
|
|||
|
Как получить такой паттерн из библиотеки `chi` - найдите сами)
|