分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

响应http的三种方法

发布时间:2023-09-06 01:33责任编辑:郭大石关键词:http

小编最近再看无闻的goweb视屏,总结视屏中三种go响应http的方法

1.直接用  http.HandleFunc()  函数

// object project main.gopackage mainimport ( ???"io" ???"log" ???"net/http")func main() { ???http.HandleFunc("/", sayhello) ???// 第一个参数代表访问的路径,第二个代表要执行的函数的名字 ???????err := http.ListenAndServe(":8080", nil) ???//设置端口号,第二个暂时没有,写为nil,在接下来的方法中介绍 ???if err != nil { ???????log.Fatal(err) ???????//如果err不为空,打印err ???}}//ResponseWriter为接口,Request为结构体func sayhello(w http.ResponseWriter, r *http.Request) { ???io.WriteString(w, "hello!this is version 1")}
View Code

2.介绍Handle方法

package main // dealFile project main.goimport ( ???"io" ???"log" ???"net/http" ???"os")func main() { ???//首先实现 NewServeMux()方法 ???max := http.NewServeMux() ???max.Handle("/", &myHandler{}) ???max.HandleFunc("/hello", sayhello) ???//静态文件的实现 ???wd, err := os.Getwd() ???if err != nil { ???????log.Fatal(err) ???} ???max.Handle("/static/", ???????http.StripPrefix("/static/", ???????????http.FileServer(http.Dir(wd)))) ???//设置监听的端口号 ???err = http.ListenAndServe(":8080", max) ???if err != nil { ???????log.Fatal(err) ???}}type myHandler struct{}//实现ServeHTTP方法func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { ???io.WriteString(w, "URL:"+r.URL.String())}func sayhello(w http.ResponseWriter, r *http.Request) { ???io.WriteString(w, "Hello world,this is version 2")}
View Code

3.Server

package mainimport ( ???"io" ???"log" ???"net/http" ???"time")var mux map[string]func(http.ResponseWriter, *http.Request)func main() { ???server := http.Server{ ???????Addr: ???????":8080", //端口号 ???????Handler: ????&myHandler{}, ?//实现的Handler ???????ReadTimeout: 5 * time.Second, ?//响应等待时间 ???} ???mux = make(map[string]func(http.ResponseWriter, *http.Request)) ???mux["/hello"] = sayHello ???mux["/bye"] = sayBye ???err := server.ListenAndServe() ???if err != nil { ???????log.Fatal(err) ???}}type myHandler struct{}func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { ???//判断URL是否为空并输出 ???if h, ok := mux[r.URL.String()]; ok { ???????h(w, r) ???????return ???} ???io.WriteString(w, "URL:"+r.URL.String())}func sayHello(w http.ResponseWriter, r *http.Request) { ???io.WriteString(w, "Hello World")}func sayBye(w http.ResponseWriter, r *http.Request) { ???io.WriteString(w, "Bye Bye")}
View Code

响应http的三种方法

原文地址:https://www.cnblogs.com/limozi/p/8145139.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved