国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Golang Gin HTTP 請求和參數(shù)解析

這篇具有很好參考價值的文章主要介紹了Golang Gin HTTP 請求和參數(shù)解析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

gin 網(wǎng)絡請求與路由處理


我們介紹了Gin框架,并做了Gin框架的安裝,完成了第一個Gin工程的創(chuàng)建。

創(chuàng)建Engine

在gin框架中,Engine被定義成為一個結構體,Engine代表gin框架的一個結構體定義,其中包含了路由組、中間件、頁面渲染接口、框架配置設置等相關內容。默認的Engine可以通過gin.Default進行創(chuàng)建,或者使用gin.New()同樣可以創(chuàng)建。兩種方式如下所示:

engine1 := gin.Default()
engine2 := gin.New()

gin.Default()和gin.New()的區(qū)別在于gin.Default()也使用gin.New()創(chuàng)建engine實例,但是會默認使用Logger和Recovery中間件。

  • Logger是負責進行打印并輸出日志的中間件,方便開發(fā)者進行程序調試
  • Recovery中間件的作用是如果程序執(zhí)行過程中遇到panic中斷了服務,則Recovery會恢復程序執(zhí)行,并返回服務器500內部錯誤。通常情況下,我們使用默認的gin.Default創(chuàng)建Engine實例。

處理HTTP請求


在創(chuàng)建的engine實例中,包含很多方法可以直接處理不同類型的HTTP請求。

HTTP請求類型


http協(xié)議中一共定義了八種方法或者稱之為類型來表明對請求網(wǎng)絡資源(Request-URI)的不同的操作方式,分別是:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT。

雖然一共有八種請求操作類型,但是實際開發(fā)中常用的GET POST DELETE等幾種。

get表示從網(wǎng)絡上獲取一種網(wǎng)絡資源,post表示要向服務器提交一段數(shù)據(jù),往往在使用的過程當中是在某個網(wǎng)頁當中有一個表單數(shù)據(jù)提交的時候使用post。delete是在刪除資源的時候執(zhí)行。

如果要攜帶數(shù)據(jù),會放在body當中,這樣會將攜帶數(shù)據(jù)的名稱和相應的數(shù)據(jù)在這里面填入就行了。?

Golang Gin HTTP 請求和參數(shù)解析

通用處理


engine中可以直接進行HTTP請求的處理,在engine中使用Handle方法進行http請求的處理。Handle 方法包含三個參數(shù),具體如下所示:

func (group *RouterGroup) Handle(httpMethod string, relativePath string, handlers ...HandlerFunc) IRoutes
  • httpMethod:第一個參數(shù)表示要處理的HTTP的請求類型,是GET、POST、DELETE等8種請求類型中的一種。
  • relativePath:第二個參數(shù)表示要解析的接口,由開發(fā)者進行定義。
  • handlers:第三個參數(shù)是處理對應的請求的代碼的定義。

?handler處理GET請求??DefaultQuery、Query


package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

// 使用handle方法處理/hello這樣一個請求
func main() {
	//創(chuàng)建engine引擎對象
	engine := gin.Default()
	//請求路徑 http://localhost:8080/hello?name=lucas 帶參數(shù)name
	//匿名函數(shù)處理http的請求,context為請求上下文,攜帶一些屬性和方法
	engine.Handle("GET", "/hello", func(c *gin.Context) {
		path := c.FullPath() //請求的接口
		fmt.Println(path)

		//獲取參數(shù),最后一個參數(shù)是獲取不到時候的默認值為hello
		name := c.DefaultQuery("name", "hello")
		fmt.Println(name)

		//輸出,處理完請求之后需要返回結果給前端
		c.Writer.Write([]byte("hello " + name))
	})

	engine.Run(":8000")
}

/hello
lucas
[GIN] 2023/04/25 - 10:53:09 | 200 |       333.7μs |       127.0.0.1 | GET      "/hello?name=lucas"

/hello
hello
[GIN] 2023/04/25 - 10:54:11 | 200 |            0s |       127.0.0.1 | GET      "/hello"

Golang Gin HTTP 請求和參數(shù)解析

Golang Gin HTTP 請求和參數(shù)解析

通過Handle方法第一個參數(shù)指定處理GET類型的請求,解析的接口是/hello。

Context是gin框架中封裝的一個結構體,這是gin框架中最重要,最基礎的一個結構體對象。

該結構體可以提供我們操作請求,處理請求,獲取數(shù)據(jù)等相關的操作,通常稱之為上下文對象,簡單說為我們提供操作環(huán)境。

可以通過context.Query和context.DefaultQuery獲取GET請求攜帶的參數(shù)。可以通過context.Writer.Write向請求發(fā)起端返回數(shù)據(jù)。

handler處理post請求??PostForm


//post http://localhost:8080/login
	//post請求攜帶數(shù)據(jù)不和get上面一樣,而是放在請求的body里面,也就是請求體里面
	engine.Handle("POST", "/login", func(c *gin.Context) {
		path := c.FullPath() //請求的接口
		fmt.Println(path)

		//獲取post表單當中數(shù)據(jù)的哪一個字段
		username := c.PostForm("username")
		password := c.PostForm("password")
		fmt.Println("username:", username, "password:", password)

		c.Writer.Write([]byte("username:" + username))
	})

Golang Gin HTTP 請求和參數(shù)解析

如上的案例,通過第一個參數(shù)指定了解析POST類型的請求,第二個參數(shù)指定解析的接口為/login。POST請求是以form表單的方式提交數(shù)據(jù)的,可以通過context.PostForm獲取表單中提交的數(shù)據(jù)字段。

其他類型的HTTP請求也可以通過Handle方法處理對應類型的請求。

分類處理? 路由


除了engine中包含的通用的處理方法以外,engine還可以按類型進行直接解析。engine中包含有get 方法、post方法、delete方法等與http請求類型對應的方法。

engine.GET() 處理GET請求

engine中包含GET方法處理HTTP的GET類型的請求。engine的GET方法包含兩個參數(shù),編程使用如下所示:

Golang Gin HTTP 請求和參數(shù)解析

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
	engine := gin.Default()
	//http://127.0.0.1/hello?name=lucas
	engine.GET("/hello", func(c *gin.Context) {
		fmt.Println(c.FullPath())

		//查詢攜帶的字段名稱,這個沒有默認返回參數(shù)
		name := c.Query("name")
		fmt.Println("name:", name)

		c.Writer.Write([]byte("name is:" + name))
	})

	engine.Run()
}


[GIN-debug] Listening and serving HTTP on :8080
/hello
name: lucas
[GIN] 2023/04/26 - 09:06:37 | 200 |       297.4μs |       127.0.0.1 | GET      "/hello?name=lucas"

/hello
name:
[GIN] 2023/04/26 - 09:07:12 | 200 |       950.7μs |       127.0.0.1 | GET      "/hello?name1=lucas"
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
	engine := gin.Default()

	engine.POST("/login", func(c *gin.Context) {
		fmt.Println(c.FullPath())

		if name, exits := c.GetPostForm("username"); exits {
			fmt.Println("username is:", name)
		}

		if password, exits := c.GetPostForm("password"); exits {
			fmt.Println("password is:", password)
		}

	})

	engine.Run()
}


[GIN-debug] Listening and serving HTTP on :8080
/login
username is: lucas 
password is: 123456
[GIN] 2023/04/26 - 09:13:34 | 200 |      1.5881ms |       127.0.0.1 | POST     "/login"

?在解析接口的這個地方,通過:自定義變量的值,:id表示變量的值

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
	engine := gin.Default()

	engine.DELETE("/user/:id", func(c *gin.Context) {
		userID := c.Param("id")
		fmt.Println("userid is:", userID)
	})

	engine.Run()
}

Golang Gin HTTP 請求和參數(shù)解析

[GIN-debug] Listening and serving HTTP on :8080
userid is: 24
[GIN] 2023/04/26 - 10:05:25 | 200 |            0s |       127.0.0.1 | DELETE   "/user/24"

上面介紹了最常用的兩種http處理請求的方式

  1. 一種是使用handler處理,需要指定具體的請求類型
  2. 其次是路由的方法post delete這種進行響應接口類型的處理。

上面同時也介紹了如何獲取客戶端提交的數(shù)據(jù)。post get delete.............................。?文章來源地址http://www.zghlxwxcb.cn/news/detail-429615.html

到了這里,關于Golang Gin HTTP 請求和參數(shù)解析的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Android網(wǎng)絡編程,HTTP請求和Json解析

    以下代碼模擬了點擊按鈕請求百度的網(wǎng)頁源碼: 其中需要注意的是Android在API27之后不再支持明文訪問HTTP,需要在manifest文件中配置屬性允許使用明文訪問, 并且Url需要使用https layout.xml 字節(jié)流轉換字符串工具類: 主類.java: 配置manifest.xml文件: 將上述代碼中的webview相關內容

    2023年04月09日
    瀏覽(29)
  • 【Golang】golang中http請求的context傳遞到異步任務的坑

    【Golang】golang中http請求的context傳遞到異步任務的坑

    在golang中,context.Context可以用來用來設置截止日期、同步信號,傳遞請求相關值的結構體。 與 goroutine 有比較密切的關系。 在web程序中,每個Request都需要開啟一個goroutine做一些事情,這些goroutine又可能會開啟其他的 goroutine去訪問后端資源,比如數(shù)據(jù)庫、RPC服務等,它們需要訪

    2024年02月08日
    瀏覽(27)
  • 深度探討 Golang 中并發(fā)發(fā)送 HTTP 請求的最佳技術

    深度探討 Golang 中并發(fā)發(fā)送 HTTP 請求的最佳技術

    ?? 個人網(wǎng)站:【 海擁】【神級代碼資源網(wǎng)站】【辦公神器】 ?? 基于Web端打造的:??輕量化工具創(chuàng)作平臺 ?? 想尋找共同學習交流的小伙伴,請點擊【全棧技術交流群】 在 Golang 領域,并發(fā)發(fā)送 HTTP 請求是優(yōu)化 Web 應用程序的一項重要技能。本文探討了實現(xiàn)此目的的各種方法

    2024年01月18日
    瀏覽(62)
  • 【golang】http.ListenAndServe源碼解析

    ListenAndServe監(jiān)聽TCP地址addr,并且會使用handler參數(shù)調用Serve函數(shù)處理接收到的連接。handler參數(shù)一般會設為nil,此時會使用DefaultServeMux。 接下來我們看一下這個函數(shù)的主要源碼流程。 Server 定義運行HTTP服務器的參數(shù)。Server的零值是一個有效的配置。 第一層相當于封裝了一下創(chuàng)建

    2024年04月08日
    瀏覽(25)
  • golang如何用http.NewRequest創(chuàng)建get和post請求

    在Go語言中,使用 http.NewRequest 函數(shù)可以創(chuàng)建GET和POST請求。下面是一個示例代碼,演示如何使用 http.NewRequest 創(chuàng)建GET和POST請求: 在上述示例中,我們首先創(chuàng)建了一個GET請求,指定了請求的URL為\\\"https://api.example.com/data\\\"。然后,我們使用 http.Client 類型的客戶端發(fā)送該請求,并獲取

    2024年02月02日
    瀏覽(29)
  • golang 發(fā)起 http 請求,獲取訪問域名的 ip 地址(net, httptrace)

    golang 發(fā)起 http 請求,獲取訪問域名的 ip 地址(net, httptrace)

    今天碰到了個需求,我要知道程序對外訪問的 http 請求域名的 ip 地址。 直接查看 golang 的 net/http 包,發(fā)現(xiàn) Response 中并沒有我想要的 ip 信息。 考慮到在 OSI 七層模型中, ip 是網(wǎng)絡層協(xié)議,而 http 是應用層協(xié)議。去翻了下 net 包,發(fā)現(xiàn)了基礎用法。 先提一下,域名訪問服務器

    2024年02月02日
    瀏覽(26)
  • 【Golang 接口自動化02】使用標準庫net/http發(fā)送Post請求

    【Golang 接口自動化02】使用標準庫net/http發(fā)送Post請求

    目錄 寫在前面 發(fā)送Post請求 示例代碼 源碼分析 Post請求參數(shù)解析 響應數(shù)據(jù)解析 驗證 發(fā)送Json/XMl Json請求示例代碼 xml請求示例代碼 總結 資料獲取方法 上一篇我們介紹了使用? net/http ?發(fā)送get請求,因為考慮到篇幅問題,把Post單獨拎了出來,我們在這一篇一起從源碼來了解一

    2024年02月14日
    瀏覽(30)
  • 【Golang 接口自動化01】使用標準庫net/http發(fā)送Get請求

    【Golang 接口自動化01】使用標準庫net/http發(fā)送Get請求

    目錄 發(fā)送Get請求 響應信息 拓展 ?資料獲取方法 使用Golang發(fā)送get請求很容易,我們還是使用 http://httpbin.org 作為服務端來進行演示。 更多的響應內容我們查看安裝路徑的net包中Response struct 的信息,里面有詳細的注釋,參考路徑: C:Gosrcnethttpresponse.go : 用過Python的同學都知

    2024年02月14日
    瀏覽(55)
  • HTTP四大參數(shù)類型及請求參數(shù)的方式和如何接收

    HTTP四大參數(shù)類型及請求參數(shù)的方式和如何接收

    請求頭參數(shù)顧名思義,是存放在請求頭中發(fā)送給服務器的參數(shù),服務器通過解析請求頭獲取參數(shù)內容。通常會存放本次請求的基本設置,以幫助服務器理解并解析本次請求的body體。 參數(shù)形式如: 在我們的SpringBoot中,通過 @RequestHeader 注解可以獲取到。 Spring Boot 讀取http head

    2024年02月03日
    瀏覽(16)
  • Java 發(fā)送Http請求攜帶中文參數(shù)時 請求報400的錯誤請求

    在 Java 中,URL 中不能直接包含中文字符,因為 URL 規(guī)范要求 URL 必須是 ASCII 字符。如果需要在 URL 中傳遞中文參數(shù),需要對中文參數(shù)進行 URL 編碼,將其轉換為瀏覽器中的參數(shù)形式??梢允褂?java.net.URLEncoder 類來進行 URL 編碼。

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包