Функциональное программирование в моде, но вместе с ним возникает много новых вопросов. Очевидно, что при размышлении о функциональном программировании и с чего стоит задуматься о нем; вы можете выбрать язык. Из всех функциональных языков нет более популярного, чем Google GO. Как Java-разработчик полного стека в течение нескольких лет, я не могу претендовать на звание эксперта по GO. Я экспериментировал с включением и выключением языка около года. Одна вещь, которую я все время слышу о GO, - это то, что здесь нет никаких фреймворков! Что ж, это правда только наполовину. В GO появились новые фреймворки. Самым полезным из них является Fiber, веб-фреймворк с потрясающими функциями, такими как нулевое выделение памяти. Для этого я покажу вам, почему я считаю фреймворки в целом переоцененными и ненужными. Мы будем использовать очень популярный и простой в настройке вызов библиотеки MUX. MUX - это библиотека HTTP / Router, созданная Gorilla, и ее можно найти здесь https://github.com/gorilla/mux. С MUX вы можете быстро и эффективно создавать RESTful API с невероятной скоростью и минимальным кодом. Давайте начнем!

Для начала вам необходимо установить GO. Вы можете загрузить GO на golang.org и следовать инструкциям при загрузке. Если вы знакомы с хорошими новостями MAC, версия 15 устанавливает для вас переменные PATH, что устраняет необходимость делать это вручную с помощью редактора VIM. После того, как вы установили GO, вам нужно будет создать файл в корневом каталоге; обычно user / local / go / bin. Обычно я предлагаю создать каталог SRC, а затем создавать свои проекты оттуда.

Для этого проекта я буду создавать аптеку с функцией CRUD для лекарств. Я долго ходил по этому поводу и решил не добавлять настойчивость в этом уроке, но меня можно убедить сделать это позже. Мой каталог называется списком лекарств. Первое, что вам нужно сделать, это открыть любой редактор; Я предпочитаю VsCode с расширением GO. Теперь вам нужно создать файл с именем main.go.

Я предполагаю, что вы уже понимаете синтаксис GO и то, как использовать импорт. Следующее, что нам нужно сделать, это установить библиотеку MUX в наш проект. В этом проекте я буду использовать терминал в VsCode для установки через go get github.com/gorilla/mux И теперь мы можем его использовать. Мы захотим создать наши переменные и объявить их типы данных, а также нам нужно будет создать их маршруты с помощью MUX.

Итак, как видите, мы просто берем тонкое приложение и делаем еще несколько вещей. Мы импортировали мультиплексорный маршрутизатор; мы создали структуру лекарств и создали пять конечных точек API для основных функций CRUD. Очевидно, что вы можете создать столько конечных точек, сколько считаете нужным для вашего приложения. На данный момент это приложение не будет компилироваться и ничего нам не вернет. Сначала нам нужно создать функции для каждого из этих методов. Прежде чем мы это сделаем, давайте создадим некоторые данные, чтобы мы могли протестировать эти конечные точки.

Прежде всего, нам нужно обслужить это приложение!

Теперь, когда мы обслужены, давайте создадим некоторые данные в памяти, чтобы увидеть, как полезная нагрузка доставляется с нашей конечной точки.

Теперь, когда у нас есть приложение, обслуживаемое на localhost: 8000, и некоторые образцы данных, давайте напишем конечную точку и посмотрим, работает ли она.

Если мы перейдем на localhost: 8000 / medications, мы должны увидеть все наши лекарства, напечатанные на странице. Поздравляем, вы только что вернули конечную точку REST в 42 строках кода без фреймворка или 5000 файлов загрузки Spring и ужасного 90-секундного холодного запуска! Вся эта функциональная штука довольно крутая, правда?

Давайте продолжим. Как насчет более сложной конечной точки? Мы могли бы вызвать лекарство по идентификатору. Для этого нам нужно будет сначала получить карту в GO. Есть несколько способов сделать это, но поскольку у нас есть MUX, самый простой способ - использовать mux.Vars () теперь с GO, мы могли бы использовать здесь вариативную функцию, но это не обязательно, поэтому мы назовем ее параметры: = mux.Vars (). После этого выполняется простой цикл for для диапазона идентификаторов и возврат правильного идентификатора.

Итак, случилось кое-что, что я решил использовать, чтобы продемонстрировать некоторые легкие навыки ГО. Несмотря на то, что у нас есть ID как INT в нашей структуре, он не работал, потому что он все еще искал строку; Итак, я сделал простой strconv.Atoi (), чтобы преобразовать тип в INT. Теперь, если вы перейдете на localhost: 8000 / medications / 3, вы должны увидеть, что лекарство вернулось на экран.

Продолжай; мы почти закончили! Добавим лекарство.

Так что довольно стандартно здесь добавляем переменную лекарства и декодируем, а затем кодируем.

Осталось еще двое…

Если идентификатор совпадает с идентификатором, обновленным в диапазоне, декодируйте значение и возвращайте недавно обновленное лекарство.

Хорошо, последний, давайте удалим лекарство и назовем его хорошим.

Это практически то же самое, что и выбор лекарства по идентификатору, за исключением того, что после того, как вы его выберете, мы добавляем i + 1 и удаляем его с карты.

Welp, вы сделали это! В конце концов, вся эта функциональная штука не так уж и сложна. Есть так много причин попробовать функциональное программирование; Прежде всего, он невероятно быстрый и легкий. Я допускаю, что это отличается от ООП и требует нового взгляда на код, но я надеюсь, что это показывает вам, что вы можете использовать функциональное программирование, чтобы делать практически все, что вы делаете в программировании. Удачи и приятного кодирования!

Если вы хотите увидеть расширенную версию этого со встроенной настойчивостью, пожалуйста, дайте мне знать.