Go语言restful

一.Restful风格请求

  • 在目前所学内容中每个请求都需要绑定一个HandlerFunc,而在实际项目中会有很多URL,且可能出现满足特定规律的URL,例如: /sxt/it和/sxt/baizhan都是以/sxt/开头.且如果这两个URL里面代码也差不多时,写两个Func就属于代码冗余了.
  • 可以使用restful风格把满足特定格式url和功能类似的代码提入到一个func中实现代码复用.

二.Go语言的多路复用器

  • 在http包中提供了ServeMux实现多路复用器,它会对URL进行解析,然后重定向到正确的处理器上

在这里插入图片描述

  • ServeMux是一个结构体,里面存放了map和读写锁
type ServeMux struct {
	mu    sync.RWMutex
	m     map[string]muxEntry
	hosts bool // whether any patterns contain hostnames
}
  • 在Go语言中有提供了ServeMux的对象DefaultServeMux,
var DefaultServeMux = &defaultServeMux

var defaultServeMux ServeMux
  • 而平时使用的http.Server不指定Handler属性时默认就是DefaultServeMux

三.使用第三方实现Restful风格

  • 可以使用命令,从github上下载第三方库,下载后放入到%GOROOT%/src/github.com中
go get github.com/gorilla/mux
  • 使用mux包的Router实现restful风格
package main

import (
	"net/http"
	"fmt"
	"github.com/gorilla/mux"
)

func hello(w http.ResponseWriter, r *http.Request) {
	vars := mux.Vars(r)
	fmt.Fprintln(w, "dayinle", vars["key"])
}

func abc(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintln(w, "abc")
}
func main() {
	r := mux.NewRouter()
	r.HandleFunc("/hello/{key}", hello)
	r.HandleFunc("/abc", abc)
	http.ListenAndServe(":8090", r)
	//s:=http.Server{Addr:":8090",Handler:r}
	//s.ListenAndServe()
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值