goweb框架搭建01,2day
基础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)时执行