0
点赞
收藏
分享

微信扫一扫

goweb学习(1)创建简单服务器


了解goweb服务工作流程

goweb学习(1)创建简单服务器_服务器


goweb学习(1)创建简单服务器_多路复用_02

1、简单实现

使用net/http包
通过处理器函数处理请求
创建服务器的步骤:
1)创建一个函数处理器,函数的入参必须是http.ResponseWriter和http.Request指针类型
2)在main函数中调用http中的HandleFunc函数指定处理指定请求的处理器
HandleFun函数能自动将1)中的函数转换为处理器
3)设置路由
具体代码

package main

import (
"fmt"
"net/http"
)

// 创建处理器函数
func handler(w http.ResponseWriter,r * http.Request){
fmt.Fprintln(w,"hello world!",r.URL.Path)
}

func main(){
// 适配器
http.HandleFunc("/",handler) // 目录 处理器

// 创建路由
http.ListenAndServe(":8080",nil) //端口 多路复用器
}

​go build helloworld.go​​ 生成helloworld.exe

在window 终端 ​​start helloworld.exe​

在linux 终端 ​​./ helloworld​

然后在浏览器可以打开了

goweb学习(1)创建简单服务器_服务器_03

2、通过处理器处理请求

处理器需要实现Handler接口中的ServHTTP方法

package main

import (
"fmt"
"net/http"
)

/* 实现Handler接口
type Handler interface {
ServeHTTP(ResponseWriter, *Request)
}
*/
type Myhandler struct{}

func (h *Myhandler)ServeHTTP( w http.ResponseWriter,r * http.Request){
fmt.Fprintln(w,"正在通过处理器处理你的请求")
}


func main(){
myHandler := Myhandler{}
// 调用用处理器
http.Handle("/myHandler",&myHandler)
http.ListenAndServe(":8080",nil) //端口 多路复用器
}

goweb学习(1)创建简单服务器_多路复用_04

3、通过详细配置服务器中的参数

package main

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

type Myhandler struct{}

func (h *Myhandler)ServeHTTP( w http.ResponseWriter,r * http.Request){
fmt.Fprintln(w,"通过详细配置服务器的信息来处理请求")
}


func main(){
myHandler := Myhandler{}
// 调用用处理器
server := http.Server{
Addr: ":8080",
Handler: &myHandler,
ReadTimeout: 2 * time.Second,
}
server.ListenAndServe()
}

goweb学习(1)创建简单服务器_linux_05

4、通过自定义多路复用器

以上的方式在调用ListenAndServe(":8080", nil)时第二个参数传入的都是nil,使用的都是默认的多路复用器DefaultServeMux,我们也可以自己创建多路复用器

package main

import (
"fmt"
"net/http"
)

//创建处理器函数
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "通过自己创建的多路复用器处理请求!", r.URL.Path)
}

func main() {
//创建多路复用器
mux := http.NewServeMux()

mux.HandleFunc("/", handler)

//创建路由
http.ListenAndServe(":8080", mux)
}

goweb学习(1)创建简单服务器_多路复用_06


goweb学习(1)创建简单服务器_多路复用_07


举报

相关推荐

0 条评论