2 Gin網路請求與路由處理 md

2022-05-04 05:24:09 字數 2901 閱讀 4514

目錄routergroup

路由分組

​ gin框架中,engine被定義為乙個結構體。包含:

建立方式

engine1 = gin.default()

engine2 = gin.new()

​ gin.default也使用gin.new()建立engine例項,但是會預設使用logger和recovery中介軟體。logger是負責進行列印並輸出日誌的中介軟體,方便開發者進行程式除錯;recovery中介軟體的作用是如果程式執行過程中遇到panic中斷了服務,則recovery會恢復程式執行,並返回伺服器500內部錯誤。通常情況下,我們使用預設的gin.default建立engine例項。

options

head

get <--

post <--

putdelete <--

trace

connect

engine中使用handle方法進行http請求的處理:

...可以通過context.query和context.defaultquery獲取get請求攜帶的引數。

可以通過context.writer.write向請求發起端返回資料。

shortcut

其他方法類似

// get is a shortcut for router.handle("get", path, handle).

func (group *routergroup) get(relativepath string, handlers ...handlerfunc) iroutes

引數查詢(如表單查詢)

context.defaultquery:除了context.defaultquery方法獲取請求攜帶的引數資料以外,還可以使用context.query方法來獲取get請求攜帶的引數。

context.getpostform獲取表單資料:post請求以表單的形式提交資料,除了可以使用context.postform獲取表單資料意外,還可以使用context.getpostform來獲取表單資料。

路由處理

普通處理

r.get("/index", func(c *gin.context) )

r.get("/login", func(c *gin.context) )

r.post("/login", func(c *gin.context) )

還有乙個可以匹配所有請求方法的any方法如下:

r.any("/test", func(c *gin.context) )
為沒有配置處理函式的路由新增處理程式,預設情況下它返回404**,下面的**為沒有匹配到路由的請求都返回views/404.html頁面。

r.noroute(func(c *gin.context) )
context.param獲取請求引數

...

engine.delete("/user/:id", deletehandle)

func deletehandle(context *gin.context)

...

客戶端的請求介面是delete型別,請求url為:http://localhost:9000/user/1。

​ 之所以engine中包含通用型的handle和分類處理的get、post等型別的方法,是因為engine中有routergroup作為匿名字段。

​ routegroup可以稱之為路由集合,在gin中定義為結構體:

type routergroup struct
​ routegroup的作用就是為每乙個服務請求提供解析功能,並指定每乙個請求對應的處理程式。

在實際的專案開發中,均是模組化開發。同一模組內的功能介面,往往會有相同的介面字首。比如如下所示:

例如在系統中有使用者模組,使用者有不同註冊、登入、使用者資訊、

註冊:http://localhost:9000/user/register

登入:http://localhost:9000/user/login

使用者資訊:http://localhost:9000/user/info

刪除:http://localhost:9000/user/1001

gin框架中可以使用路由組來實現對路由的分類。

​ 我們可以將擁有共同url字首的路由劃分為乙個路由組。習慣性一對{}包裹同組的路由,這只是為了看著清晰,你用不用{}包裹功能上沒什麼區別。路由組也是支援巢狀的。

路由組是router.group中的乙個方法

engine := gin.default()

usergroup := engine.group("/user")

engine.run(":9000")

​ gin框架中的路由使用的是httprouter這個庫。其基本原理就是構造乙個路由位址的字首樹。

python mock介面 ,網路請求2

使用模組 flask 為什麼用,為了本地寫一些介面使用psotman一些工具測試 import flask 輕量級的web開發框架 import tools import json import datetime import time server flask.flask name server....

iOS 網路請求 與 網路封裝

void viewdidload void buttonclick uibutton button void getsynchrnized void postsynchrnized void getasynchrnized void postasynchrnized 新建立乙個類,繼承與nsobje...

RESTful與網路請求過程

最近想好好總結一下網路請求的一些相關的內容,隨便深入去 一下內部是如何實現的。這個名詞可能經常被提到過,這裡也順便簡單過一遍。簡單看看它常用的行為 簡單看看請求的狀態碼 就簡單理解下就好,可以把它當成乙個規範。我建議可以去看這兩篇文章,寫得都比較清楚 1.網路osi模型 常說的網路七層模型 最好還是...