Я искал повода испробовать фреймворк Martini с момента его анонса в почтовой рассылке golang-nuts. Martini — это пакет (package) для языка программирования Go, предназначенный для веб-разработки. Он стремительно стартовал, заработав 2000 «звездочек» за несколько недель на GitHub (а впервые Martini был там опубликован около месяца назад) (прим. пер. статья-оригинал была опубликована 27 ноября 2013 года).
Поэтому я решил сделать пример приложения, который бы реализовывал некий (практичный) RESTful API, основанный на лучших практиках. Код, иллюстрирующий эту статью, можно посмотреть на GitHub.
Почему Martini?
В Martini есть много вещей для того, чтобы реализовать мою задумку.
Прежде всего, это очень элегантный API, использующий только тонкий слой абстракции поверх превосходного пакета net/http
из стандартной библиотеки, и факт понимания всесущего интерфейса http.Handler
(прим. пер.: видимо, автор имеет ввиду, что в стандартной библиотеке вовсю используется именно http.Handler
, а Martini ловко маскируется под него).
Другой ключевой особенностью является то, что как только Martini покажется для вас «магическим» (мне не нравится магия), вам абсолютно необходимо будет взглянуть на его исходные тексты. Это ~400 строчек исходных текстов, небольшие числом и хорошо контролируемые (так это было сегодня утром), с одной внешней зависимостью, пакетом inject
, таким же «худым», состоящим всего из ~100 строчек исходных текстов.
Читать полностью »