用原生Go写一个自己的博客-搭建项目

  • 可以在环境中设置代理goproxy.cn避免国内下包出错

启动服务

最开始可以先对一个端口18080启动一个服务:

package main

import (
    "log"
    "net/http"
)

func index(w http.ResponseWriter, r *http.Request) {

}

func main() {
    //    启动一个http服务 指明ip和端口
    server := http.Server{
        Addr: "127.0.0.1:18080",
    }
    //响应访问http://localhost:18080/的请求
    http.HandleFunc("/", index)
    //    监听对应的端口 & 启动服务
    if err := server.ListenAndServe(); err != nil {
        log.Println(err)
    }
}

效果:
用原生Go写一个自己的博客-搭建项目_第1张图片没有404,说明服务启动成功。

添加响应

接下来,我们在index这个func可以添加响应:

func index(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("hey this is LiberHom"))
}

传递json数据

当然,实际开发一般不会是这么简单的文字,而是一些web页面,需要给前端返回json信息,我们需要在Header中指明是json。

func index(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    w.Write([]byte("hey this is LiberHom"))
}

效果:
用原生Go写一个自己的博客-搭建项目_第2张图片
我们可以构造完整一些的例子如下:

package main

import (
    "encoding/json"
    "log"
    "net/http"
)

//构造一些数据
type IndexData struct {
    Title string `json:"title"`
    Desc  string `json:"desc"`
}

func index(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    var indexData IndexData
    indexData.Title = "Liber-Blog"
    indexData.Desc = "this is the desc part"
    //把结构体实例转成对应的json
    jsonStr, _ := json.Marshal(indexData)
    w.Write(jsonStr)
}

func main() {
    //    启动一个http服务 指明ip和端口
    server := http.Server{
        Addr: "127.0.0.1:18080",
    }
    //响应访问http://localhost:18080/的请求
    http.HandleFunc("/", index)
    //    监听对应的端口 & 启动服务
    if err := server.ListenAndServe(); err != nil {
        log.Println(err)
    }
}

运行结果如下:
用原生Go写一个自己的博客-搭建项目_第3张图片

参考: bilibili

你可能感兴趣的:(go)