API остальных в Go - использование net/http против библиотеки вроде Gorilla

Я вижу, что сам Go имеет пакет net/http этого достаточно для обеспечения всего, что вам нужно, чтобы ваши собственные REST API работали. Однако существует множество фреймворков, наиболее популярными могут быть, скажем, гориллы.

Учитывая, что одной из основных вещей, которые мне нужно сделать в будущем, является создание API-интерфейсов REST, которые в общем случае будут обращаться к некоторому внутреннему хранилищу (базы данных, кеши и т. Д.) Для выполнения операции CRUD, хорошо ли идти со стандартной библиотекой Go самой или следует рассмотреть используя некоторые рамки?

Обычно люди пишут новую библиотеку или структуру, которая решает проблему, существующую в существующей библиотеке. Но многие фреймворки также имеют тенденцию усугублять ситуацию, когда фактические требования просты.

Поэтому у меня есть несколько вопросов:

  1. Является ли базовая библиотека в go lang достаточно хорошей, чтобы поддерживать базовую или умеренную функциональность для REST?

  2. Если я в конечном итоге использую встроенную библиотеку, и завтра мне придется изменить ее, чтобы использовать какую-то инфраструктуру (например, gorilla), насколько трудными / дорогостоящими будут эти усилия?

  3. Действительно ли фреймворки решают проблемы или просто усложняют простые проблемы?

Я был бы чрезвычайно признателен за то, что кто-то поделится своими мыслями здесь (кто сделал этот выбор сам), пока я исследую больше своих собственных.

2 ответа

Решение

Встроенный net/http Пакета достаточно для построения полного REST API. Однако некоторые библиотеки могут немного облегчить создание API, особенно если REST API сложен. Переход от встроенных средств к любой достойной структуре относительно прост - они обычно принимают обработчики http.Handler тип.

В конце концов, однако, это чрезвычайно ситуативный выбор. Лучшее, что вы можете сделать, - это изучить каждое доступное решение, сопоставить и сравнить, а также, если возможно, составить доказательство концепции с наилучшими вариантами. Опыт из первых рук поможет вам лучше всего.

  1. net/http Пакета, вероятно, достаточно для большинства сценариев, но если вы хотите облегчить разработку, вам следует использовать сторонние пакеты, такие как Gorilla. Например, net/http"s ServeMux отлично справляется с маршрутизацией входящих запросов по фиксированным URL-путям, но для симпатичных путей, использующих переменные, вам потребуется реализовать собственный мультиплексор, а при использовании Gorilla вы получаете это бесплатно.

    Другой пример: если вы хотите указать ресурсы RESTful с правильными методами HTTP, трудно работать со стандартнымhttp.ServeMuxв то время как с гориллой mux пакет, запросы могут быть сопоставлены на основе URL-адреса хоста, пути, префикса пути, схем, значений заголовка и запроса и методов HTTP.

  2. Одним из больших преимуществ Gorilla является то, что он полностью совместим с net/http пакет и может быть заменен в будущем.

  3. Смотрите 1.

Я полностью призываю вас использовать инструментарий Gorilla для разработки сервисов REST.

Другие вопросы по тегам