一、服务器的启动
func main() {
err := http.ListenAndServe("127.0.0.3:333", nil)
if err != nil {
panic(err)
}
}
二、路由的设置
func Routers() {
// 1 页面的设置
http.HandleFunc("/", views.HTML.Index)
// 2 api数据
http.HandleFunc("/api/v1/login", apis.API.Login)
// 3静态资源 映射问题
// 建立一个http路径
staticDir := http.Dir("./public/resource/")
// 建立一个文件服务器, 目录是./public/resource/
fileServer := http.FileServer(staticDir)
// 返回一个函数,
// 后把/resource/变成 文件服务器的目录 ./public/resource/
staticHandler := http.StripPrefix("/resource/", fileServer )
// 拦截所有/resource/ 进行函数操作
http.Handle("/resource/", staticHandler)
}
三、请求 r *http.Request
1、请求行的参数
r.URL.Query() 返回一个 map[string][]string
普通和数组参数,是可以的
但是map容器,需要自己手写算法
?name=zhngsan&age=25
&arr=1&arr=2&arr=3
&MyMap[home]=Beijing&MyMap[company]=shanghai
获取url路径
path := r.URL.Path
如果访问是http.HandleFunc("/api/v1/login", apis.API.Login)
这个path是 "/api/v1/login"
2、请求头的参数
headers := r.Header 返回一个 map[string][]string
道理一样
3、请求体的json参数
r.Body
Body io.ReadCloser
自己手写算法,json变成 map[string]interface{}
var params map[string]interface{}
body, _ := ioutil.ReadAll(r.Body)
_ = json.Unmarshal(body, ¶ms)
return params
四、响应 w http.ResponseWriter
1、响应行
设置状态码
w.WriteHeader(http.StatusNotFound)
2、响应头
设置响应的类型
w.Header().Set("Content-Type", "application/json")
3、响应体
str := "啊哈哈哈"
w.Write([]byte( str ))
GO的Web开发Day01、简单的http的服务器操作
于 2024-12-23 17:45:53 首次发布