Go 语言入门很简单:net/url 包(下)

简介: 在 Golang 中,将 URL 打包用于从服务器获取数据非常重要。只需了解您是否正在处理任何应用程序并且您想从任何外部位置或服务器获取此应用程序的数据,都需要我们可以使用 URL。

在 Golang 中解析 URL

package main
import (
  "fmt"
  "log"
  "net/url"
)
func TestURL() {
  URL, err := url.Parse("http://bing.com/good%2bad")
  fmt.Println("Url before modification is", URL)
  if err != nil {
    log.Fatal("An error occurs while handling url", err)
  }
  fmt.Println("The URL path is", URL.Path)
  fmt.Println("The URL raw path is", URL.RawPath)
  fmt.Println("The URL is ", URL.String())
}
func main() {
  TestURL()
}

运行代码:

$ go run main.go
Url before modification is http://bing.com/good%2bad
The URL path is /good+ad
The URL raw path is /good%2bad
The URL is  http://bing.com/good%2bad


处理相对路径

package main
import (
  "fmt"
  "log"
  "net/url"
)
func ExampleURL() {
  URL, error := url.Parse("../../..//search?q=php")
  fmt.Println("Url before modification is", URL)
  if error != nil {
    log.Fatal("An error occurs while handling url", error)
  }
  baseURL, err := url.Parse("http://example.com/directory/")
  if err != nil {
    log.Fatal("An error occurs while handling url", err)
  }
  fmt.Println(baseURL.ResolveReference(URL))
}
func main() {
  ExampleURL()
}
$ go run main.go
Url before modification is ../../..//search?q=php
http://example.com/search?q=php

解析空格

package main
import (
  "fmt"
  "log"
  "net/url"
)
func ExampleURL() {
  URL, error := url.Parse("http://example.com/Here path with space")
  if error != nil {
    log.Fatal("An error occurs while handling url", error)
  }
  fmt.Println("The Url is", URL)
}
func main() {
  ExampleURL()
}

运行结果:

$ go run main.go
The Url is http://example.com/Here%20path%20with%20space


判断绝对地址

package main
import (
  "fmt"
  "net/url"
)
func main() {
  u := url.URL{Host: "example.com", Path: "foo"}
  fmt.Println("The Url is", u.IsAbs())
  u.Scheme = "http"
  fmt.Println("The Url is", u.IsAbs())
}
$ go run main.go
The Url is false
The Url is true


解析端口

package main
import (
  "fmt"
  "log"
  "net/url"
)
func ExampleURL() {
  URL1, error := url.Parse("https://example.org")
  fmt.Println("URL1 before modification is", URL1)
  if error != nil {
    log.Fatal("An error occurs while handling url", error)
  }
  URL2, err := url.Parse("https://example.org:8080")
  if err != nil {
    log.Fatal("An error occurs while handling url", URL2)
  }
  fmt.Println("URL2 before modification is", URL2)
  fmt.Println("URL2 Port number is", URL2.Port())
}
func main() {
  ExampleURL()
}
$ go run main.go
URL1 before modification is https://example.org
URL2 before modification is https://example.org:8080
URL2 Port number is 8080


总结

从本教程中,我们了解了 go url 包 的基本概念,并了解了 url 的概念语法。并逐渐展示了 url 的部分功能以及 url 的主要用途,希望读者可以在官方文档中学习其他方法。


相关文章
|
前端开发 JavaScript 安全
入门Vue+.NET 8 Web Api记录(一)
入门Vue+.NET 8 Web Api记录(一)
656 5
|
开发框架 .NET 测试技术
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
本文介绍了 `.NET 9` 中新推出的 `Microsoft.AspNetCore.OpenApi` 包,该包旨在为 `ASP.NET Core` 应用程序生成 `OpenAPI` 文档。文章对比了 `NSwag` 和 `Swashbuckle.AspNetCore` 两大现有库,探讨了新包的优势和不足,特别是在性能和功能方面。尽管新包在某些方面尚不及成熟库完善,但其对原生 `AoT` 编译的支持和未来的扩展潜力使其成为一个值得考虑的选择。文章还提供了详细的性能测试数据和优化建议,适合对 `OpenAPI` 文档生成感兴趣的开发者阅读。
703 4
了解 .NET 9 中的新 Microsoft.AspNetCore.OpenApi 包,并将其与 NSwag 和 Swashbuckle.AspNetCore 进行比较。
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
335 3
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
530 8
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
313 2
|
程序员 C# 图形学
全面的C#/.NET自学入门指南
全面的C#/.NET自学入门指南
302 0
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
335 2
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (3)第七天Blazor学生管理页面编写和接口对接
七天.NET 8操作SQLite入门到实战 - (3)第七天Blazor学生管理页面编写和接口对接
202 1
|
开发框架 .NET Java
C#/.NET/.NET Core自学入门指南
C#/.NET/.NET Core自学入门指南
295 0
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
260 0