您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

golang http怎么使用

2024/4/2 13:10:18发布28次查看
都说go标准库实用,api设计简洁。这次就用go 标准库中的net/http包实现一个简洁的http web服务器,包括三种版本。
最简单版          (推荐学习:go)
直接使用
http.handlefunc(partern,function(http.responsewriter,*http.request){})
handlefunc接受两个参数,第一个为路由地址,第二个为处理方法。
//v1func main() { http.handlefunc("/", func(w http.responsewriter, r *http.request) { w.write([]byte("httpserver v1")) }) http.handlefunc("/bye", saybye) log.println("starting v1 server ...") log.fatal(http.listenandserve(":1210", nil)) }func saybye(w http.responsewriter, r *http.request) { w.write([]byte("bye bye ,this is v1 httpserver"))}
自定义handler
查看标准库源码,v1版本实际上是调用了handle方法,传入的handlerfunc实现了handler的servehttp方法,实际上是servehttp在做http请求处理。
由此我们可以自定义自己的handler,代码如下:
// v2func main() { mux := http.newservemux() mux.handle("/", &myhandler{}) mux.handlefunc("/bye", saybye) log.println("starting v2 httpserver") log.fatal(http.listenandserve(":1210", mux))}type myhandler struct{}func (*myhandler) servehttp(w http.responsewriter, r *http.request) { w.write([]byte("this is version 2"))}func saybye(w http.responsewriter, r *http.request) { w.write([]byte("bye bye ,this is v2 httpserver"))}
自定义server配置
前面对handler开了一次刀,下面我们看看http.listenandserve()中有些什么秘密。
原来这里可以自定义http服务器配置,都在server这个结构体中,这个对象能配置监听地址端口,配置读写超时时间,配置handler,配置请求头最大字节数...,所有稍微改造一下上一个的程序得到现在的程序:
// v3func main() { mux := http.newservemux() mux.handle("/", &myhandler{}) mux.handlefunc("/bye", saybye) server := &http.server{ addr: ":1210", writetimeout: time.second * 3, //设置3秒的写超时 handler: mux, } log.println("starting v3 httpserver") log.fatal(server.listenandserve())}type myhandler struct{}func (*myhandler) servehttp(w http.responsewriter, r *http.request) { w.write([]byte("this is version 3"))}func saybye(w http.responsewriter, r *http.request) { // 睡眠4秒 上面配置了3秒写超时,所以访问 “/bye“路由会出现没有响应的现象 time.sleep(4 * time.second) w.write([]byte("bye bye ,this is v3 httpserver"))}
以上就是golang http怎么使用的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product