跟着金毛从零开发Go Web —— (1)使用http库启动http server叭!


跟着金毛从零开发Go Web —— (1)使用http库启动http server叭!

前言:

  《Golang学习日记》系列实在是不好写,555,而且市面上已经有了很多优秀的go教程了,再就是我要是边学go还边写个笔记要浪费很多时间,所以《Golang学习日记》很遗憾地被我在这宣布停更了(也许有一天心血来潮会复活?)。Go系列取而代之的是我会在边学着做项目的时候,一边记录学习的过程,我认为记录下做一个项目时的关键点会很有价值。所以,从今天开始金毛站长开始了学习Go web的项目开发,项目会用到go的web框架——gin,以及ORM框架——gorm。我会边学边做记录,尽量让大家能通过看我的笔记就能复刻和学会一模一样的项目。


启动http server:

  本篇很简单,只讲go怎么启动http server并且怎么显示一个网页,也就是本篇我们一起web开发入个门。用到的是http库,不需要任何框架。

1. 引入http库

  首先我们引入http库,在go文件中输入以下代码:

import "net/http"

2. Go写一个html网页

  接下来该用Go写一个html网页了!新建一个函数用来专门写我们的网页,就叫它Welcome吧!那么我们需要什么参数呢?写http我们一般需要的是两个:请求(Request)和响应(Response)。这里我们是要写网页的,所以我们需要往http里写入东西,所以对于响应来说我们需要的是一个ResponseWriter,它们都在http库中写好了,我们直接拿来用就好了。示例如下:

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

    /* 使用Fprintfln是往文件里写东西,这里是往我们的ResponseWriter写的意思
     * 第二个参数是我们要写的内容,
     * Fprintln会返回一个int(写入字节数)和一个err(错误信息) 
     * 这里我们用空白标识符对两个返回值进行接收*/
    _, _ = fmt.Fprintln(w, "hello,this is Eriri!")
}

3. http.HandleFunc处理网页

  写完了我们的网页之后,该完成我们的main函数了,想让我们http服务器能够调用刚写完的Welcome,这时候就需要http.HandleFunc这个方法:

func HandleFunc(pattern string, handler func(ResponseWriter, *Request))

  HandleFunc这个方法有两个参数,第一个参数pattern是个相对URL地址,第二个参数即要调用的方法。示例如下:

http.HandleFunc("/welcome", Welcome)

4. 启动http server

  最后是启动我们的http server,使用http.ListenAndServe方法就可以启动我们的http server啦。该方法需要两个参数,一个是addr即地址,另一个handler是处理程序,通常情况下我们都是让它为nil,此时会使用默认的http请求多路复用器DefaultServeMux。它还有一个返回值error,返回值为错误信息。

func ListenAndServe(addr string, handler Handler) error

  以下是完整代码示例:

package main

import (
    "fmt"
    "net/http"
)

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

    /* 使用Fprintfln是往文件里写东西,这里是往我们的ResponseWriter写的意思
     * 第二个参数是我们要写的内容,
     * Fprintln会返回一个int(写入字节数)和一个err(错误信息) 
     * 这里我们用空白标识符对两个返回值进行接收*/
    _, _ = fmt.Fprintln(w, "hello,this is Eriri!")
}
func main() {
    http.HandleFunc("/welcome", Welcome)

    //:520意思为使用520端口
    err := http.ListenAndServe(":520", nil)

    //对错误信息的处理
    if err != nil {
        fmt.Printf("http server startup failed,error:%v\n", err)
        return
    }
}

  运行go程序我们的http server就启动啦!此时在浏览器中输入URL:http://localhost:520/welcome 或者 http://127.0.0.1:520/welcome ,即可显示我们的Welcome网页!
图中多套了<h1>标签,和上面的代码有些不同
  我们可以改进一下Welcome函数,引入ioutil包使用ReadFile方法对本地文件进行读取之后,再用本地文件的内容来写到http中,这样可以让我们更方便地编辑html内容。

func Welcome(w http.ResponseWriter, r *http.Request) {
    i, _ := ioutil.ReadFile("hello.txt")

    //i是[]byte类型,强制转换为string
    _, _ = fmt.Fprintln(w, string(i))
}

杂谈:

  本篇的内容到此结束,很短很简单,大家应该很快就用go启动起来一个http server了吧?🍭🍭我们下期再见!


文章作者: 金毛败犬
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 金毛败犬 !
评论
  目录