go-restful框架的使用和实现

go-restful框架的使用和实现简单介绍go-restful框架应用于kubernetes源码上,且使用起来简单灵活。REST(Representational State Transfer,表现层状态转化)是近几年使用较广泛的分布式结点间同步通信的实现方式。REST原则描述网络中client-server的一种交互形式,即用URL定位资源,用HTTP方法描述操作的交互形式。如果CS之间...
摘要由CSDN通过智能技术生成

go-restful框架的使用和实现

简单介绍

go-restful框架应用于kubernetes源码上,且使用起来简单灵活。
REST(Representational State Transfer,表现层状态转化)是近几年使用较广泛的分布式结点间同步通信的实现方式。REST原则描述网络中client-server的一种交互形式,即用URL定位资源,用HTTP方法描述操作的交互形式。如果CS之间交互的网络接口满足REST风格,则称为RESTful API。以下是 理解RESTful架构 总结的REST原则:
•网络上的资源通过URI统一标示。
•客户端和服务器之间传递,这种资源的某种表现层。表现层可以是json,文本,二进制或者图片等。
•客户端通过HTTP的四个动词,对服务端资源进行操作,实现表现层状态转化。

为什么要设计RESTful的API,个人理解原因在于:用HTTP的操作统一数据操作接口,限制URL为资源,即每次请求对应某种资源的某种操作,这种 无状态的设计可以实现client-server的解耦分离,保证系统两端都有横向扩展能力。

go-restful

go-restful is a package for building REST-style Web Services using Google Go。go-restful定义了Container WebService和Route三个重要数据结构。
•Route 表示一条路由,包含 URL/HTTP method/输入输出类型/回调处理函数RouteFunction
•WebService 表示一个服务,由多个Route组成,他们共享同一个Root Path
•Container 表示一个服务器,由多个WebService和一个 http.ServerMux 组成,使用RouteSelector进行分发

最简单的使用实例,向WebService注册路由,将WebService添加到Container中,由Container负责分发。

func main() {
  ws := new(restful.WebService)
  ws.Path("/users")
  ws.Route(ws.GET("/").To(u.findAllUsers).
    Doc("get all users").
    Metadata(restfulspec.KeyOpenAPITags, tags).
    Writes([]User{}).
    Returns(200, "OK", []User{}))
 
 container := restful.NewContainer().Add(ws)
 http.ListenAndServe(":8080", container)
}

点击我的博客如下:
link

装饰器模式

import "fmt"
type HandleFunc  func(a,b string)

func (f HandleFunc) ServeTime(a,b string) {
	f(a, b)
}
type Handler interface {
	ServeTime(x, y string)
}
func Create(m,n string) {
	fmt.Println(m, "Create" , n)
}
func Delete(m,n string) {
	fmt.Println(m, "Delete" , n)
}

func main() {
	HandleFunc(Create).ServeTime("333", "444")
	HandleFunc(Delete).ServeTime("3
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值