j

jaryue

V1

2023/03/15阅读:15主题:默认主题

go web框架搭建day1

@TPC

基础1(开启http服务)

方法1: 定义function然后用http.handfunc函数来调用定义的function实现启动http服务的目的
代码实现:

package main

import (
 "fmt"
 "log"
 "net/http"
)

// w是一个接口,有
// Header() http.Header:返回响应的头部信息
// Write([]byte) (int, error):写入响应的正文数据
// WriteHeader(int):写入响应的状态码
// req是一个结构体
func indexhander(w http.ResponseWriter, req *http.Request) {
 fmt.Fprintf(w, "URL=%q\n", req.URL.Path) //向w中写入。。。。。
}
func hellohander(w http.ResponseWriter, req *http.Request) {
 for k, v := range req.Header { //请求头部信息
  fmt.Fprintf(w, "header[%q]=%q\n", k, v) //向w中写入头部信息
 }
}
func main() {
 http.HandleFunc("/", indexhander)
 http.HandleFunc("/hello", hellohander)
 log.Fatal(http.ListenAndServe(":8888"nil)) //开启监听端口8888 ,并打印日志
}

方法2 实现servehttp的接口 定义一个结构体去实现servehttp 的函数,函数的功能需要自定义 代码示例:

package main

import (
 "fmt"
 "log"
 "net/http"
)

// 定义空结构体作为req的参数传入
type Eng struct{}

func (eng *Eng) ServeHTTP(w http.ResponseWriter, req *http.Request) {
 switch req.URL.Path {
 case "/":
  fmt.Fprintf(w, "URL=%q\n", req.URL.Path)
 case "/hello":
  for i, v := range req.Header {
   fmt.Fprintf(w, "header[%q]=%q", i, v)
  }
 default:
  fmt.Fprintf(w, "404 not found:%s\n", req.URL)
 }
}
func main() {
 e := new(Eng)
 //开启serve,访问8888端口可以执行servehttp函数
 log.Fatal(http.ListenAndServe(":8888", e))
}

执行结果
当访问hello时执行 当访问到其他(hell)时执行

分类:

后端

标签:

后端

作者介绍

j
jaryue
V1