170 похожих чатов

Ребята, всех приветствую! Прошу подсказать мне и помочь переписать роутер на

PHP в роутер на Go.

Сразу скажу, я PHP программист с хорошим опытом, и вот пытаюсь плавно освоить Go.
И в качестве практики решил написать простейший проект.

У меня есть проекты работающие с самописным ядром в котором реализован достаточно функциональный роутер.
Вот я и хочу его реализовать в Го с таким же желательно функционалом как в приложении на PHP

В качестве сравнения прилагаю ссылки на два файла:

1. Мой старый роутер на PHP в проектах - https://pastebin.com/r8Hw7WJA
Убрал все лишее, сунул все в один файл без неймспейсов чисто для демонстрации.

2. И файлик с простейшим роутером на Go - https://pastebin.com/j0thEcBm
Там нативный https сервер без nginx-а. С автополучением сертификатов от Letsencrypt.
Сейчас у меня простейший роутер на switch, но хотел бы использовать регулярные выражения
с именнованными подмасками как в роутере на PHP.

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

Чтобы я например из роута: https://sait.ru/api/v1/product/(?<id>[0-9]{1,})/update
мог потом получить переменную id и оперировать в логике с ней.

Не пинайте меня, мне нравится язык и я хочу его изучить.

Надеюсь что я смог правильно донести, то, что я хочу.

9 ответов

7 просмотров

https://github.com/gorilla/mux

Регекспы медленные для такого

Юрий-Вельмесов Автор вопроса
Daniil Korekovcev
https://github.com/gorilla/mux

Даниил, подскажите. А нативными средствами Го можно как то реализовать? Или только с помощью сторонних пакетов? Я кстати забыл сразу это указать в своем сообщении.

Юрий-Вельмесов Автор вопроса

Я согласен, что все это на нативе. Но каждую либу пишут по разному и с разным скилом. Кто то реализует мощный функционал дополнительный которого нет в нативе, но к этому всему и код не оч. оптимизирован может быть. Я сейчас погуглил про gorilla/mux, по отзывам вроде норм пакет, и многие его юзают, даже в гите сейчас посмотрел, многие крупные проекты заюзали этот пакет. Возможно мне не стоит заморачиваться и тоже стоит её заюзать. Посмотрю еще и скорее всего так и сделаю. Как я понял, штатными средствами Го я не заюзаю именованные подмаски в регулярках для матчига роутов?

Юрий-Вельмесов Автор вопроса

Спасибо еще раз Вам, буду дальше изучать и пробовать пилить проект!

Юрий Вельмесов
Даниил, подскажите. А нативными средствами Го можн...

Очевидно, что можно. Раз пакеты написаны, то и самостоятельно можно написать🌚

Vladislav Semyachkin
Очевидно, что можно. Раз пакеты написаны, то и сам...

Только в итоге получится то же самое и хуже протестированное и с меньшим функционалом возможно. 🤗

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
50
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Hello, I need a hand, this is my code: body: ExtendedImageGesturePageView.builder( scrollDirection: Axis.vertical, controller: _pageController, itemCou...
𝘞𝘦𝘢𝘳𝘪𝘯𝘨𝘔𝘦𝘥𝘢𝘭 🦋
2
Карта сайта