【Go】【Http】Go实现Http相关知识点
Web Client Server
几个概念
概念 | 解释 |
---|---|
Request | 用户请求的信息,用来解析用户的请求 |
Response | 服务器返回给Client的信息 |
Conn | 用户的每次请求链接 |
Handler | 处理请求和生成返回信息的处理逻辑 |
-
Multiplexer
:server接受request的过程中,最重要的是router
,即实现一个Multiplexer
。- 目的:为了找到处理器函数
handler
,handler将对request进行处理,并构建response。 - Go中有内置的Multiplexer:
DefaultServeMux
- 目的:为了找到处理器函数
-
Handler函数: 具有
func(w http.ResponseWriter, r *http.Requests)
签名的函数 -
Handler处理器(函数):经过
HandlerFunc
结构包装的handler函数
,它实现了ServeHTTP接口方法的函数。调用handler处理器的ServeHTTP方法时,即调用handler函数本身。 -
Handler对象:实现了Handler接口ServeHTTP方法的结构。
-
type Handler interface { ServeHTTP(ResponseWriter, *Request) }
-
HTTP包运行机制
-
- 流程:
- Client
- Request
- Multiplexer(router)
- handler
- Response
- Client
- 流程:
func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
- 第一个参数指的是请求路径,第二个参数是一个函数类型,表示这个请求需要处理的事情。
Go实现Http服务
- 步骤
- 首先注册路由
- 然后创建服务并开启监听
net/url
-
func QueryEscape
func QueryEscape(s string) string
- QueryEscape函数对s进行转码使之可以安全的用在URL查询里。
Curl
-
curl [options] <url>
-
Headers
-
-H/--header LINE (H) # 添加请求头, 可添加多个 -H 参数, # 参数格式: -H "NAME: VALUE" -A/--user-agen STRING (H) # 请求头的 User-Agent 字段 -e/--referer URL (H) # 请求头的 Referer 字段 -r/--range RANGE (H) # 请求头的 Range 字段 -b/--cookie STRING/FILE (H) # 请求头的 Cookie 字段, 以字符串的形式提供, # 或从指定 cookie 文件中读取 -c/--cookie-jar FILE (H) # 把响应头中的 cookie 保存到指定文件 -D/--dump-header FILE # 把 headers 信息保存指定文件 -I/--head # 只显示文档信息(只显示响应头)
-
-
Request Content
- 执行命令,如果是HTTP,则是请求方法:GET, POST, PUT, DELETE等
- FTP,FTP