Golang——net/http
时间:2022-06-22
本文章向大家介绍Golang——net/http,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
构建一个web
在浏览器输入http://localhost:8080
import (
"net/http"
"fmt"
"log"
)
func sayhelloGolang(w http.ResponseWriter, r *http.Request) {
r.ParseForm() //解析参数,默认是不会解析的
fmt.Println("path", r.URL.Path)
w.Write([]byte("Hello Golang"))
}
func main() {
http.HandleFunc("/", sayhelloGolang) //设置访问的路由
err := http.ListenAndServe(":8080", nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
继承ServeHTTP
type BaseHander struct {
}
func (hander *BaseHander)ServeHTTP(resp http.ResponseWriter,req *http.Request){
fmt.Println("url path=>",req.URL.Path)
fmt.Println("url param a =>",req.URL.Query().Get("a"))
resp.Write([]byte("hello world"))
}
func main() {
http.ListenAndServe(":8080",&BaseHander{});
}
net/http 路由
package mux
import (
"net/http"
)
type muxHandler struct {
handlers map[string]http.Handler
handleFuncs map[string]func(resp http.ResponseWriter, req *http.Request)
}
func NewMuxHandler() *muxHandler {
return &muxHandler{
make(map[string]http.Handler),
make(map[string]func(resp http.ResponseWriter, req *http.Request)),
}
}
func (handler *muxHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
urlPath := req.URL.Path
if hl, ok := handler.handlers[urlPath]; ok {
hl.ServeHTTP(resp, req)
return
}
if fn, ok := handler.handleFuncs[urlPath]; ok {
fn(resp, req)
return
}
http.NotFound(resp, req)
}
func (hander *muxHandler) Handle(pattern string, hl http.Handler) {
hander.handlers[pattern] = hl
}
func (handler *muxHandler) HandleFunc(pattern string, fn func(resp http.ResponseWriter, req *http.Request)) {
handler.handleFuncs[pattern] = fn
}
var (
port string
)
func main() {
flag.StringVar(&port, "port", ":8080", "port to listen")
flag.Parse()
router :=mux.NewMuxHandler()
router.Handle("/hello/golang/", &BaseHander{})
router.HandleFunc("/hello/world", func(resp http.ResponseWriter, req *http.Request) {
resp.Write([]byte("hello world"))
})
http.ListenAndServe(port, router)
}
- golang 使用json 包 实现序列化
- 【远古文章】用 Go 语言来看 Android! 出发, Android, 出发!
- Leaf 游戏服务器框架简介
- MongoDB 存储过程的使用以及性能调优方案
- [go语言]利用缓冲信道来实现网游帐号验证消息的分发和等待
- 【Golang语言社区--投稿专区】简单,好玩,有趣的命令行版12306(golang)
- 网游内存数据库的设计(1)
- 网游内存数据库的设计(2)
- Golang语言 上传文件
- Golang语言 监控文件变化小程序.
- Golang语言实现 tail 查看文本文件末行功能,类似于linux tail -n 100 功能
- Golang语言 实现线程池
- Golang实现类似Scan或者Scanf功能
- Golang不使用MD5比较文件内容是否一致
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法