go标准库neturl阅读

84次阅读

共计 1342 个字符,预计需要花费 4 分钟才能阅读完成。

go 标准库(net/url)阅读

url 介绍

  • 问题 1:什么是 url?

    当我们使用搜索引擎搜索东西的,我们第一步先在浏览器的地址栏里输入 google.com,www.google.com,http://www.google.com。我们在地址栏里输入的东西就是 URL。
    URL 又叫统一资源定位符,用于定位我们要访问的文档或者其他资源。

  • 问题 2:URL 有什么样的格式?

    scheme://[userinfo]@[host]:[port]/path?key1=value1&key2=value2#fragment
    协议(http, https, file, ftp)

    用户信息,是可选的

    主机名字或者 ip 地址,定位网络位置

    port 服务端口,一般端口表示提供了某项服务

    path 主机上的目录

    ?后的问 query 信息,key1=value1 是表示 key 值和 value 值,& 是连接符

    ‘#’后面的是 fragment 信息

  • 问题 3:URL 如何处理非 ascii 编码?

    非 ascii 编码,使用 % 后跟两位 16 进制数表示,如 %AB

    URL 中不能有空格,空格用“+”表示。

url 库

我们知道 url 中不能有空格和非 ascii 字符。当我们的 url path 字段中出现这样的字符,我们该如何处理呢。

  • url path 字段中有空格和非 ascii 字符

    func PathEscape(s string) string
    返回的 string 将是 url 可以使用的 % 后跟两位 16 进制数的形式

  • 如何把 url 中的 path 字段还原成原始模式

    func PathUnescape(s string) (string, err)

    a := "hello, 世界" //contain non-ascii code
    b := url.PathEscape(a)
    fmt.Printf("%v\n", b)
    // Output: hello%2C%20%E4%B8%96%E7%95%8C
    c, _ := url.PathUnescape(b)
    fmt.Printf("%v\n", c)
    // Output: hello, 世界

Note: path 中的空格和非 ascii 字符使用同样的方式处理。

  • query 字段中出现非 ascii 字符和空格如何处理

    func QueryEscape(s string) string
    func QueryEscape(s string) (string, error)
    Note:空格的处理和 path 不太一样,’ ‘ 将会编程 ’+’
    示例: https://github.com/MoonNan/go…

  • 如何解析 URL

主要通过 Parse 函数来解析 URL 地址。
示例代码:https://github.com/MoonNan/go…

  • 如何处理 Query 数据

Query 字段可以通过 ParseQuery 函数来处理。ParseQuery 根据传入的字符串,生成一个 Values 字典。

type Values map[string][]string

方法:
Encode 把 Values 生成字符串
Get Set Del Add
示例代码:https://github.com/MoonNan/go…

  • 如何处理 userinfo

type Userinfo 用来处理用户数据
User 和 UserPassword 函数生成 Userinfo 结构体
方法:Userinfo Password Username

正文完
 0