GoLang处理URL提取Get参数

谦益同学 · · 7688 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

图片来源于网络

我们在项目里面大部分都是直接使用封装好的网络库,需要获取请求里面的参数直接调他们的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)


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:谦益同学

查看原文:GoLang处理URL提取Get参数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

7688 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传