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

  • 可以在环境中设置代理goproxy.cn避免国内下包出错
启动服务
最开始可以先对一个端口18080启动一个服务:
package mainimport ( "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写一个自己的博客-搭建项目
文章图片
没有404,说明服务启动成功。
添加响应
接下来,我们在index这个func可以添加响应:
func index(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hey this is LiberHom")) }

传递json数据
【用原生Go写一个自己的博客-搭建项目】当然,实际开发一般不会是这么简单的文字,而是一些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写一个自己的博客-搭建项目
文章图片

我们可以构造完整一些的例子如下:
package mainimport ( "encoding/json" "log" "net/http" )//构造一些数据 type IndexData struct { Title string `json:"title"` Descstring `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写一个自己的博客-搭建项目
文章图片

参考: bilibili

    推荐阅读