第一步当然是go mod init youremail.com
创建文件
目录结构
package main
import (
"encoding/json"
"log"
"net/http"
"os"
"text/template"
)
type IndexData struct {
Title string `json:"title"` // TODO 将Title转为title
Desc string `json:"desc"`
}
type IndexHtmlData struct {
Title string `json:"title"` // TODO 将Title转为title
Desc string `json:"desc"`
Name string `json:"name"` // TODO
Age int `json:"age"` // TODO
}
// TODO 处理函数
func index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello,world!"))
}
func home(w http.ResponseWriter, r *http.Request) {
// TODO 返回json的数据
w.Header().Set("Content-Type", "application/json")
w.Write([]byte(`{"code":200,"msg":"success"}`))
}
func info(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var indexData IndexData
indexData.Title = "首页"
indexData.Desc = "这是首页描述信息"
jsonStr, _ := json.Marshal(indexData)
w.Write(jsonStr)
}
// 获取页面html
func indexHtml(w http.ResponseWriter, r *http.Request) {
var indexHtmlData IndexHtmlData
indexHtmlData.Title = "首页"
indexHtmlData.Desc = "这是首页描述信息"
indexHtmlData.Name = "张三"
indexHtmlData.Age = 18
// 实现访问页面
t := template.New("index.html")
// 1.拿到当前路径
path, _ := os.Getwd()
t.ParseFiles(path + "/template/index.html")
t.Execute(w, indexHtmlData)
}
func main() {
// 1.启动服务
server := http.Server{
Addr: "localhost:8080",
}
//3.处理服务请求
http.HandleFunc("/", index)
http.HandleFunc("/home", home)
http.HandleFunc("/info", info)
http.HandleFunc("/index.html", indexHtml)
// 2.监听
if err := server.ListenAndServe(); err != nil {
log.Println(err)
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
hello golang blog
<div>
{{.Title}} - {{.Desc}} - {{.Name}} - {{.Age}}
</div>
</body>
</html>
通过{{.}}语法可以获取到自己创建的信息。