Выполнение/вызов функции из Go файла при нажатии на кнопку html?

Привет. Учусь создавать веб приложения на Golang.
Дефолтно кнопки html могут выполнять функции JS.
Как вызывать функцию из Go кода при нажатии юзером кнопки на сайте?
Конечно сначала порылся в инете. Все сводится к AJAX либо Rest api. Но по заданному вопросу информации не наблюдается. В основном все про создание и тестирование сервера и просто вода про возможности. Никакой конкретики.

Т.е. для точности примера:
в main.go в функции страницы имеется условная функция foo() которая обрабатывает данные на странице и выводит.
В html имеется кнопка, при нажатии на которую необходимо выполнить эту функцию foo()

Куча ответов абстрактны: используй AJAX или Rest API. Материалов по конкретным задачам с использованием этих ресурсов я не нашел. Только общий план работы.
Спасибо.
  • Вопрос задан
  • 1410 просмотров
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Алгоритм у вас будет примерно таким...
При нажатии на кнопку у вас будет вызвана функция (обработчик события onClick у кнопки).
В этой функции вы сделаете AJAX запрос по протоколу HTTP на ваш сервер, где запущено ваше ПО на Go.
В main.go вы запускаете HTTP сервер, который примет запрос от вашей функции JavaScript, обработает его и ответит.

Разберём самый простой вариант с методом GET, чтобы вам было проще тестировать.

На сервере (своём компьютере) запускаете main.go примерно такого содержания
package main

import (
    "fmt"
    "net/http"
)

func helloHandler(w http.ResponseWriter, req *http.Request) {
    fmt.Fprintf(w, "hello\n")
}

func main() {
    http.HandleFunc("/hello", helloHandler)

    http.ListenAndServe(":8081", nil)
}

Этот сервис будет слушать порт 8081 любого IP адреса на сервере, где будет запущен.
Предположим, что вы тестируете на своём компьютере, в этом случае для проверки вам нужно в браузере откройте url `127.0.0.1:8081/hello`
После этого вы должны увидеть в ответе просто текст: "hello".
Когда этот этап будет завершен - вы сможете перейти к вызову этого URL уже из JavaScript.
Для этого можете использовать то, что вам привычнее, если такого нет - можете воспользоваться этим примером
const req = new XMLHttpRequest();
  const url='http://127.0.0.1:8081/hello';
  req.open("GET", url);
  req.send();
  req.onreadystatechange=(e)=>{
    console.log(req.responseText)
  }

PS: Если не понятно или что-то не получится - пишите, помогу разобраться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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