GoLang处理URL提取Get参数

图片来源于网络

我们在项目里面大部分都是直接使用封装好的网络库,需要获取请求里面的参数直接调他们的API就可以了。

今天我突发奇想,他们是怎么做到的,自己也尝试着写了一段代码来提取GET里面的参数,班门弄斧了。

这是我的代码片段,一起交交流下:


    urlStr := "/index/show?name=zs&age=12"

    //查找字符串的位置
    questionIndex := strings.Index(urlStr, "?")
    //判断是否存在/符号
    cutIndex := strings.Index(urlStr, "/")
    //打散成数组
    rs := []rune(urlStr)
    //用于存储请求的地址切割
    requestSlice := make([]string, 0, 0)
    //用于存储请求的参数字典
    parameterDict := make(map[string]string)
    //请求地址
    requsetStr := ""
    //参数地址
    parameterStr := ""
    //判断是否存在 ?
    if questionIndex != -1 {
        //判断url的长度
        parameterStr = string(rs[questionIndex+1 : len(urlStr)])
        requsetStr = string(rs[0:questionIndex])
        //参数数组
        parameterArray := strings.Split(parameterStr, "&")
        //生成参数字典
        for i := 0; i < len(parameterArray); i++ {
            str := parameterArray[i]
            if len(str) > 0 {
                tem := strings.Split(str, "=")
                if len(tem) > 0 && len(tem) == 1 {
                    parameterDict[tem[0]] = ""
                } else if len(tem) > 1 {
                    parameterDict[tem[0]] = tem[1]
                }
            }
        }
    } else {
        requsetStr = urlStr
    }

    //判断是否存在 /
    if cutIndex == -1 {
        requestSlice = append(requestSlice, requsetStr)
    } else {
        //按 / 切割
        requestArray := strings.Split(requsetStr, "/")
        for i := 0; i < len(requestArray); i++ {
            //判断第一个字符
            if i == 0 {
                //判断第一个字符串是否为空
                if len(requestArray[i]) != 0 {
                    requestSlice = append(requestSlice, requestArray[i])
                }
            } else {
                requestSlice = append(requestSlice, requestArray[i])
            }
        }

    }

    log.Println("参数url:")
    log.Println(parameterStr)
    log.Println("请求url:")
    log.Println(requsetStr)
    log.Println("参数字典:")
    log.Println(parameterDict)
    log.Println("请求的字典:")
    log.Println(requestSlice)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,009评论 3 119
  • 夏天已经过去了,但我的床上依然挂着蚊帐。倒不是我懒得把它取下来,而是我不想让寝室里的小鼠与我来一场亲密的零...
    PApudding阅读 198评论 0 0
  • 意识朦胧,灵魂离体,朦胧中却看到那个自己躺在床上,身上插满各种管子,周围有一群穿着白色衣服忙碌的身影,在于死神做着...
    Knight_3f46阅读 206评论 0 0
  • 有人说教育是一种工作,有人夸他伟大,有人叹他辛苦,更甚有人唾弃他,但这一点也不影响我把他当作梦想并付诸行动。 大四...
    杨蕊20阅读 600评论 1 16
  • 今天气温比较高,有点进入夏天的感觉,吃过晚饭我带着孩子奶奶和两个孩子去广场转转,不想开车所以骑着电动车出发...
    女人越简单越快乐阅读 155评论 0 1