Home > Backend Development > Golang > Golang's browser support: building an interactive web

Golang's browser support: building an interactive web

WBOY
Release: 2024-04-07 16:03:01
Original
887 people have browsed it

Go builds interactive web applications that run in the browser. Steps: Create Go project and main.go file, add HTTP handler to display messages. Add forms using HTML and JavaScript for user input and submission. Add handling of POST requests in your Go application, receive user messages and return responses. Use the Fetch API to send POST requests and handle server responses.

Golang 的浏览器支持:搭建交互式 Web

Build interactive web applications with Go: Browser support

Go is a versatile programming language that is not limited to back-end development. In this article, we will show you how to easily create interactive web applications using Go to run in the browser.

Creating a Go Web Application

First, create a new Go project:

go mod init myapp
Copy after login

Next, create a project named main.go file and add the following code:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    // 定义一个处理程序函数,它将在浏览器中渲染一个简单的消息
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello from Go!")
    })

    // 启动 HTTP 服务器侦听端口 8080 上的请求
    http.ListenAndServe(":8080", nil)
}
Copy after login

Browse Web Application

Run the Go application using the following command:

go run main.go
Copy after login

Then, open http: //localhost:8080. You should see the "Hello from Go!" message displayed on the page.

Add interactivity

To add interactivity we can use HTML and JavaScript. Add the following to the main.go file, inside the http.HandleFunc closure:

    // 创建一个简单表单,包含一个输入字段和一个提交按钮
    fmt.Fprintf(w, "<form method='POST'><input type='text' name='message'/><input type='submit' value='Send'/></form>")
Copy after login

This will create a form on the page that the user can Enter the message and submit it by pressing the "Send" button.

Next, add the following JavaScript code to the bottom of the HTML page, after the </form> tag:

const form = document.querySelector('form');

form.addEventListener('submit', (e) => {
    e.preventDefault();
    const message = e.target.querySelector('input[name="message"]').value;

    // 使用 Fetch API 发送 POST 请求
    fetch('/', {
        method: 'POST',
        body: JSON.stringify({ message }),
        headers: {
            'Content-Type': 'application/json'
        }
    })
    .then(res => res.json())
    .then(data => {
        // 处理服务器响应
        console.log(data);
    })
    .catch(error => {
        // 处理错误
        console.log(error);
    });
});
Copy after login

This JavaScript code will listen for form submissions, Collect user-entered messages and send POST requests to the Go server using the Fetch API.

In the Go application, add the following code to handle the POST request:

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if r.Method == "POST" {
            // 解析 JSON 请求正文
            var msg Message
            decoder := json.NewDecoder(r.Body)
            if err := decoder.Decode(&msg); err != nil {
                http.Error(w, err.Error(), http.StatusBadRequest)
                return
            }

            // 处理消息并返回响应
            fmt.Fprintf(w, "Got your message: %s", msg.Message)
        } else {
            // 处理其他请求方法
        }
    })

    // 定义一个用于保存消息的类型
    type Message struct {
        Message string `json:"message"`
    }

    http.ListenAndServe(":8080", nil)
}
Copy after login

With these changes, our web application can now receive input from the user and display a response to it.

Conclusion

Building interactive web applications using Go is easy and powerful. By combining the backend processing power of Go with the frontend capabilities of HTML and JavaScript, you can create rich user experiences that run directly in the browser.

The above is the detailed content of Golang's browser support: building an interactive web. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template