GO - URL Parsing

GO - URL Parsing 首页 / Golang入门教程 / GO - URL Parsing

Go对URL解析具有良好的支持。 URL包含方案,身份验证信息,主机,端口,路径,查询参数和查询片段。我们可以解析URL并推断出要传入服务器的参数是什么,然后相应地处理请求。

net/url软件包具有必需的功能,例如Scheme,User,Host,Path,RawQuery等。

Go URL解析示例1

package main
import "fmt"
import "net"
import "net/url"
func main() {

	p := fmt.Println

	s := "Mysql://admin:password@serverhost.com:8081/server/page1?key=value&key2=value2#X"

	u, err := url.Parse(s)
	if err != nil {
		panic(err)
	}
	p(u.Scheme)	//打印 URL 的 Schema
	p(u.User)	// 打印解析的用户和密码
	p(u.User.Username())	//打印用户名
	pass, _ := u.User.Password()
	p(pass)		//打印用户密码
	p(u.Host) 		//打印主机和端口
	host, port, _ := net.SplitHostPort(u.Host)		 //拆分主机名和端口
	p(host)		//打印主机
	p(port)		//打印端口
	p(u.Path)		//打印路径
	p(u.Fragment)		//打印片段路径值
	p(u.RawQuery)		//打印提供的查询参数名称和值
	m, _ := url.ParseQuery(u.RawQuery)		//parse query param into map
	p(m)		//prints param map
	p(m["key2"][0])		//prints specific key value
}

输出:

mysql
admin:password
admin
password
serverhost.com:8081
serverhost.com
8081
/server/page1
X
key=value&key2=value2
map[key:[value] key2:[value2]]
value2 

Go URL解析示例2

package main

import (
	"io"
	"net/http"
)


func main() {
	http.HandleFunc("/company", func(res http.ResponseWriter, req *http.Request) {
		displayParameter(res, req)
	})
	println("Enter the url in browser:  http://localhost:8080/company?name=Tom&age=27")
	http.ListenAndServe(":8080", nil)
}
func displayParameter(res http.ResponseWriter, req *http.Request) {
	io.WriteString(res, "name: "+req.FormValue("name"))
	io.WriteString(res, "\nage: "+req.FormValue("age"))
}

输出:

在浏览器中输入网址: http://localhost:8080/company?name=Tom&age=27

Go Url Passing 1

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

许式伟的架构课 -〔许式伟〕

RPC实战与核心原理 -〔何小锋〕

深入浅出云计算 -〔何恺铎〕

Vim 实用技巧必知必会 -〔吴咏炜〕

Spark核心原理与实战 -〔王磊〕

etcd实战课 -〔唐聪〕

说透芯片 -〔邵巍〕

大厂设计进阶实战课 -〔小乔〕

手把手带你写一个MiniSpring -〔郭屹〕

好记忆不如烂笔头。留下您的足迹吧 :)