Go+ URL 解析教程(5.6)

举报
liuzhen007 发表于 2021/12/17 22:28:09 2021/12/17
【摘要】 目录Go+ 概述正文导入包常见的 URL 实例解析 URL 不同字段具体实例演示Go+ 概述Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。正文Go+ 提供了统一的对 URL 进行字段分割解析的方法,使用起来非常简单...
  • 目录

  • Go+ 概述

  • 正文

    • 导入包
    • 常见的 URL 实例
    • 解析 URL 不同字段
    • 具体实例演示

Go+ 概述

Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。

正文

Go+ 提供了统一的对 URL 进行字段分割解析的方法,使用起来非常简单。接下来我们就来了解一下这部分的一些内容。

导入包

Go+ 在解析 URL 中的字段时,一般使用的工具库是 net/url 包,导入方式如下:

import (      
     "net/url" 
)

常见的 URL 实例

URL 也被称为统一资源定位符,用来表示某个地址的唯一标识,日常工作和生活中,我们经常会见到各种各样的 URL 实例,比如

百度地址:"www.baidu.com/"

数据库地址:"mongodb://liuzhen007:123456@gop.com:1024/api/check?id=123#f"

视频播放地址:"v.qq.com/x/video/mzc…"

解析 URL 不同字段

下面介绍不同字段应该如何获取,具体内容如下:

  1. 协议:u.Scheme

  2. 用户信息:u.User

  3. 用户名: u.User.Username()

  4. 用户秘密:u.User.Password()

  5. 域名或者IP(带端口):u.Host

  6. 分离域名或者IP、端口:net.SplitHostPort(u.Host)

  7. API路由:u.Path

  8. 片段信息:u.Fragment

  9. Query参数:u.RawQuery

具体实例演示

接下来,我们拿数据库地址的 URL 进行演示,看看 Go+ 是如何解析 URL 中的参数的,示例代码如下:

package main

import (
    "net"
    "net/url"
)

s := "mongodb://liuzhen007:123456@gop.com:1024/api/check?id=123#f"

u, err := url.Parse(s)
if err != nil {
    panic(err)
}

println("协议:", u.Scheme)

println("用户信息:", u.User)
println("用户名:", u.User.Username())
p, _ := u.User.Password()
println("用户秘密:", p)

println("域名或者IP(带端口):", u.Host)
host, port, _ := net.SplitHostPort(u.Host)
println("域名或者IP:", host)
println("端口:", port)

println("API路由:", u.Path)
println("片段信息:", u.Fragment)

println("Query参数:", u.RawQuery)
m, _ := url.ParseQuery(u.RawQuery)
println("Query参数(map形式):", m)
println("Query参数id的值:", m["id"][0])

代码执行结果:

协议: mongodb
用户信息: liuzhen007:123456
用户名: liuzhen007
用户秘密: 123456
域名或者IP(带端口): gop.com:1024
域名或者IP: gop.com
端口: 1024
API路由: /api/check
片段信息: f
Query参数: id=123
Query参数(map形式): map[id:[123]]
Query参数id的值: 123

亲自试一试!

作者简介:大家好,我是 Data-Mining(liuzhen007),是一位音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,公众号:玩转音视频。同时也是 CSDN 博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。