浅谈go-restful框架的使用和实现-创新互联

REST(Representational State Transfer,表现层状态转化)是近几年使用较广泛的分布式结点间同步通信的实现方式。REST原则描述网络中client-server的一种交互形式,即用URL定位资源,用HTTP方法描述操作的交互形式。如果CS之间交互的网络接口满足REST风格,则称为RESTful API。以下是 理解RESTful架构 总结的REST原则:

创新互联网站建设服务商,为中小企业提供成都网站制作、做网站服务,网站设计,绵阳服务器托管等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联。
  1. 网络上的资源通过URI统一标示。
  2. 客户端和服务器之间传递,这种资源的某种表现层。表现层可以是json,文本,二进制或者图片等。
  3. 客户端通过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三个重要数据结构。

  1. Route 表示一条路由,包含 URL/HTTP method/输入输出类型/回调处理函数RouteFunction
  2. WebService 表示一个服务,由多个Route组成,他们共享同一个Root Path
  3. 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)
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:浅谈go-restful框架的使用和实现-创新互联
当前路径:http://ybzwz.com/article/isdej.html