1、用法:

  (1)导入包github.com/drone/routes

  (2)使用包中的New()方法建立一个routes.RouteMux对像的引用。其它也能理解为一个http.Handler,只是内部通过不同的方式如(GET、POST、PUT、DEL)进行了不同http.Handler的调用。

  (3)通过net/http包下的ListenAndServe(":8088",mux),去启动一个Web服务。

  (4)通过Get和POST方式分别去请求结果。路径中,将变量的部分替换成您要传递的值即可。如:mux.Post("/user/:uid/:age", edituser), 中可以通过POST请求发起地址:http://127.0.0.1:8088/user/song/23 去调用,此时系统将使用edituser方法,去处理代码。edituser方法中,可以通过r.URL.Query().Get(":uid")去取得用户id,如song。通过r.URL.Query().Get(":age")去取得年龄23.

2、代码:

//用法:routes其实是个路由框架,当你使用Get请求或Post请求请求转发好的地址时,它会根据相应路径,进行值拆分。不同的请求方式,将使用不同的路由去拆分。
package main import (
"fmt"
"net/http"
"net/url" "github.com/drone/routes"
) func getuser(w http.ResponseWriter, r *http.Request) {
var params url.Values = r.URL.Query()
var uid string = params.Get(":uid")
fmt.Fprintln(w, "get a user ", uid, " success!")
}
func getuserAndAge(w http.ResponseWriter, r *http.Request) {
var params url.Values = r.URL.Query()
var uid string = params.Get(":uid")
var age string = params.Get(":age")
fmt.Fprintln(w, "get a user ", uid, " success! age is ", age)
}
func edituser(w http.ResponseWriter, r *http.Request) {
var params url.Values = r.URL.Query()
var uid string = params.Get(":uid")
fmt.Fprintln(w, "edit a user ", uid, " success!")
}
func main() {
fmt.Println("正在启动WEB服务...")
var mux *routes.RouteMux = routes.New()
mux.Get("/user/:uid", getuser)
mux.Get("/user/:uid/:age", getuserAndAge)
mux.Post("/user/:uid", edituser) //http.Handle("/", mux)
http.ListenAndServe(":8088", mux)
fmt.Println("服务已停止")
}

3、运行结果:

D:/Application/Go/bin/go.exe build -i [D:/Projects/GoPath/source/demo/restful]
成功: 进程退出代码 0.
D:/Projects/GoPath/source/demo/restful/restful.exe [D:/Projects/GoPath/source/demo/restful]
正在启动WEB服务...

4、测试:

        

Go语言中Restful模式与Routes路由框架的更多相关文章

  1. C语言中的fread和fwrite

    C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...

  2. 关于Javascript语言中this关键字(变量)的用法

    最近很多 Javascript初学者朋友总在问: Javascript 的this 关键字的用法.我在这里索性总结一下 this关键字的用法. this 关键字是面向对象编程语言中的一个重要概念!在J ...

  3. php 中函数获取可变参数的方法, 这个语法有点像 golang 语言中的

    原文呢:http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.strict Onl ...

  4. C语言中,头文件和源文件的关系(转)

    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...

  5. C 语言中 setjmp 和 longjmp

    在 C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处:但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转.后面我们会看到这两个函数在处理异常 ...

  6. c语言中的scanf在java中应该怎么表达,Scanner类。

    1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...

  7. C语言中do...while(0)的妙用(转载)

    转载来自:C语言中do...while(0)的妙用,感谢分享. 在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语 ...

  8. C语言中,定义的含义?声明的含义?它们之间的区别是什么?

    在C语言中,对于定义和声明,也许我们非常的熟悉,但不一定真正的了解! 定义的含义:所谓定义,就是创建(编译器)一个对象,为这个对象分配一块内存空间并取名,也就是我们平常所说的变量名或对象名,一旦这个名 ...

  9. C++中函数的默认参数和C语言中volatile的学习

    1.函数默认参数 1 int func(int a,int b=10) 2 { 3 return a*b; 4 } 5 6 int main() 7 { 8 int c=func(2); 9 cout ...

随机推荐

  1. Linux学习4-阿里云服务器(CentOS)下使用 Tomcat安装 Jenkins

    前言 通常做自动化测试,需要用到jenkins来做持续集成,那么linux系统里面如何使用tomcat安装Jenkins环境呢? 前面一篇已经搭建好java和tomcat环境,接着直接下载jenkin ...

  2. Easyui numberbox获取焦点事件

    Html文件: <input id="auctionBrandNoGetByHand" style="width:160px;" class=" ...

  3. JVM编译优化

    在部分的商用虚拟机中,Java 程序最初是通过解释器(Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”.为了提高热点代码的执 ...

  4. 整理:FPGA选型

    针对性整理下FPGA选型问题 一.获取芯片资料: 要做芯片的选型,首先就是要对有可能要面对的芯片有整体的了解,也就是说要尽可能多的先获取芯片的资料.现在FPGA主要有4个生产厂家,ALTERA,XIL ...

  5. 查看sql执行的情况

    今天同事让看一个sql,无意中学到一个查看sql执行情况的命令,以前都是傻傻的等的,今后不用了 SELECT percent_complete FROM sys.dm_exec_requests

  6. FMX.Controls单元 中图形矩阵变换

    procedure TControl.DoMatrixChanged(Sender: TObject);var TranslateMatrix, ScaleMatrix, RotMatrix: TMa ...

  7. 魅族推送 简介 集成 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Spring Boot Maven 打包可执行Jar文件!

    Maven pom.xml 必须包含 <packaging>jar</packaging> <build> <plugins> <plugin&g ...

  9. 7个提高效率的JavaScript调试工具

    现在的JavaScript事实上已然成为了流行的web语言,即使它并不完美.很多程序员不喜欢用JavaScript写代码,是因为写到后来总会出现各种莫名其妙的bug,而且在开发大型应用程序的过程中很容 ...

  10. C# 二种方法控制系统音量/麦克风大小

    场景:在做播放设备的时候需要控制音量的大小,下面几种方法将满足你的要求 方法一: 改变系统音量设置 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...