第十四章 gin基礎

文章目錄

    • Gin快速搭建一個web服務
    • Gin數據交互JSON串內容規范
    • Gin使用結構體返回數據給前端
    • Gin配置POST類型的路由
    • Gin獲取GET請求參數
    • Gin獲取POST請求參數-form-data類型
    • Gin獲取POST請求參數-JSON類型
    • Gin獲取參數綁定至結構體

Gin快速搭建一個web服務

  1. 下載包
\\新建一個文件,文件名gitstudy,然后右擊使用vscode打開,初始化目錄,并下載包
go mod init ginstudy 
go get -u github.com/gin-gonic/gin
  1. 新建main.go
package mainimport ("net/http""github.com/gin-gonic/gin"
)func main() {//1. 創建一個路由引擎,之后可以在路由引擎中添加一些路由和路由處理邏輯r := gin.Default()//2. 添加路由到路由引擎,以及指定該路由的處理邏輯// GET("該路由的路徑,處理該路由的邏輯")r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",})})r.GET("/", func(c *gin.Context) {//c.String//http.StatusOk, 就是狀態碼200,http這個包定義了相關狀態碼別名,直接調用就好c.String(http.StatusOK, "你在訪問首頁")})//3. 啟動gin服務r.Run() // 默認監聽8080,可以修改其他端口,r.Run(:8081)
}

Gin數據交互JSON串內容規范

  1. 用獨立函數返回json串的寫法
// 定義一個函數,用于gin處理相關請求的邏輯,并返回json數據
func getUserInfo(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"name":    "馬云","age":     18,"address": "杭州",})
}//使用獨立的函數處理邏輯r.GET("/api/user/info", getUserInfo)

瀏覽器訪問
在這里插入圖片描述

  1. 前后端分離時,返回j給前端json串常用的格式,這是相對標準的格式,可以給前端返回數據都按這個格式
	/*{"status": 200, //請求已經收到,后端處理返回給前端狀態碼,命名自定義code、statusCode"message": "查詢成功""data": {"name": "馬云","age": "18","address": "杭州",}}*/

Gin使用結構體返回數據給前端

type UserInfo struct {Username string `json:"username"`Age      int    `json:"age"`Address  string `json:"address"`
}type RetrunData struct {Status  int      `json:"status"`Message string   `json:"message"`Data    UserInfo `json:"data"`
}func retrunDataWithStruct(c *gin.Context) {UserInfo := UserInfo{Username: "馬云",Age:      18,Address:  "杭州",}RetrunData := RetrunData{Status:  200,Message: "用戶信息查詢",Data:    UserInfo,}c.JSON(http.StatusOK, RetrunData)
}r.GET("/api/usr/infoWithSturct", retrunDataWithStruct)

Gin配置POST類型的路由

跟get配置基本一樣,只是訪問的需要postman使用post請求

func addUser(c *gin.Context) {RetrunData := RetrunData{Status:  200,Message: "創建成功",}c.JSON(http.StatusOK, RetrunData)
}r.POST("/api/user/add", addUser)

在這里插入圖片描述

Gin獲取GET請求參數

參數是什么?就是url 問號后面的字段。?articleId=149418888,多個參數使用&符號分隔
例如:https://editor.csdn.net/md/?articleId=149418888&username=admin
1.配置接收參數

	//接受參數u := c.Query("username") //u := c.DefaultQuery("username","小馬")id, _ := strconv.Atoi(c.Query("id"))//去數據庫中查詢該用戶信息fmt.Printf("拿到用戶名:%s, ID:%d\n", u, id)
  1. 發送帶參數請求
    在這里插入圖片描述

  2. 查看參數是否已接收到
    在這里插入圖片描述

Gin獲取POST請求參數-form-data類型

// POST數據提交格式有兩種:
// JSON {}
// from-data 表單,數據量比較小使用,兩種方法都有用到func addUser(c *gin.Context) {// POST獲取請求參數//from-data獲取請求參數u := c.PostForm("username")age, _ := strconv.Atoi(c.PostForm("age"))//address := c.PostForm("address")address := c.DefaultPostForm("address", "北京") //如果請求里沒有這個key,就使用默認值,如果傳有這個key就以你的配置為準UserInfo := UserInfo{Username: u,Age:      age,Address:  address,}RetrunData := RetrunData{Status:  200,Message: "創建成功",Data:    UserInfo,}c.JSON(http.StatusOK, RetrunData)
}

在這里插入圖片描述

Gin獲取POST請求參數-JSON類型

func addUserByJson(c *gin.Context) {// POST獲取請求參數// JSON接受參數jsonData, _ := c.GetRawData()//拿到json串之后,也有兩種處理。//1.轉成一個mapvar m map[string]interface{}json.Unmarshal(jsonData, &m)c.JSON(http.StatusOK, m)}

在這里插入圖片描述

Gin獲取參數綁定至結構體

//模型綁定
// 可以把請求的數據直接綁定到結構體  // 常用
// JSON接受參數,并且綁定到結構體func addUserBindStuct(c *gin.Context) {UserInfo := UserInfo{}if err := c.ShouldBindJSON(&UserInfo); err != nil {// 說明綁定失敗fmt.Println("數據綁定失敗", err.Error())c.JSON(http.StatusOK, gin.H{"message": "參數格式不正確","status":  500,})} else {c.JSON(http.StatusOK, UserInfo)}}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915415.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915415.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915415.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Baumer工業相機堡盟工業相機如何通過YoloV8的深度學習模型實現PCB的缺陷檢測(C#代碼,UI界面版)

Baumer工業相機堡盟工業相機如何通過YoloV8的深度學習模型實現PCB的缺陷檢測(C#代碼,UI界面版)工業相機使用YoloV8模型實現PCB的缺陷檢測工業相機實現YoloV8模型實現PCB的缺陷檢測的技術背景在相機SDK中獲取圖像轉換圖像的代碼分析工業相機圖…

【Vivado那些事兒】AMD-XILINX 7系列比特流加密

前提:加密有風險,操作需謹慎前言在許多項目中,經過漫長的等待,我們的 FPGA 設計終于可以投入現場部署了。前期的資金的投入及知識產權的保護,我們需要對現場部署的 FPGA 進行比特流保護以防止逆向工程和未經授權的重復…

RK3588 安卓adb操作

adb(Android Debug Bridge)是一個用于與安卓設備進行通信和控制的工具。adb可以通過USB或無線網絡連接安卓設備,執行各種命令,如安裝和卸載應用,傳輸文件,查看日志,運行shell命令等。adb是安卓開…

【華為機試】70. 爬樓梯

文章目錄70. 爬樓梯描述示例 1示例 2提示解題思路核心分析問題建模算法實現方法1:動態規劃(標準解法)方法2:空間優化動態規劃(最優解)方法3:遞歸 記憶化方法4:數學公式(…

山東大學軟件學院面向對象期末復習

面向對象 文章目錄面向對象04 類封裝接口 抽象類05 消息,實例化,靜態變量方法消息動/靜態類型語言對象創建類及實例具有下面特征對象數組的創建靜態數據成員構造函數06_0 繼承繼承是向下傳遞的JAVA為什么不支持多重繼承繼承的形式特殊化繼承替換原則規范…

讓 Windows 用上 macOS 的系統下載與保姆級使用教程

模擬蘋果桌面軟件下載:https://xpan.com.cn/s/8NFAGT 還記得 Windows 11剛發布時,很多人就說“果里果氣"的,但界面確實做的漂亮。 不知道現在有多少小伙伴正用著macOS,不過我敢確定,喜歡macOS的人絕對不少&#…

嵌入式硬件篇---繼電器

繼電器是一種通過小電流控制大電流的電磁開關,廣泛應用于自動化控制、電力系統和電子設備中。以下從工作原理、應用場景和電路特點三個方面詳細介紹:一、工作原理繼電器本質是電磁控制的機械式開關,核心部件包括:線圈(…

鴻蒙網絡編程系列58-倉頡版TLS數字證書查看及驗簽示例

1. TLS數字證書驗簽簡介 數字證書的簽名驗證是網絡編程中一個重要的功能,它保證了數字證書是由可信任的簽發方簽署的,在此基礎上,我們才可以信任該證書,進而信任基于該證書建立的安全通道,所以說,數字證書…

【React Native】安裝配置 Expo Router

過去開發React Native,所使用的路由都是React Navigation。但是這個東西使用起來非常困難,配置無比繁瑣。Expo,為了簡化操作,就基于React Navigation開發了Expo Router。 Expo Router用起來就要簡單的多了,配置也相對…

美國VPS服務器Linux內核參數調優的實踐與驗證

美國vps服務器Linux內核參數調優的實踐與驗證在云計算和虛擬化技術日益普及的今天,美國VPS服務器因其穩定的網絡環境和優越的性價比,成為眾多企業和開發者的首選。Linux內核參數的默認配置往往無法充分發揮VPS的性能潛力。本文將深入探討美國VPS服務器上…

在Vscode中使用Kimi K2模型:實踐指南,三分鐘生成個小游戲

Kimi K2是一款基于多專家(MoE)架構的強大代碼與代理能力基礎模型。本文將通過在VS Code及其擴展Cline和RooCode中的實際應用,詳細說明如何使用Kimi K2-0711-preview模型。不得不說kimi這次的K2模型就是強大,在vscode中配置使用體驗…

基于SpringBoot+Uniapp球場預約小程序(騰訊地圖API、Echarts圖形化分析、二維碼識別)

“ 🎈系統亮點:騰訊地圖API、Echarts圖形化分析、二維碼識別”01系統開發工具與環境搭建前后端分離架構 項目架構:B/S架構 運行環境:win10/win11、jdk17前端: 技術:框架Vue.js;UI庫:…

windows + phpstorm 2024 + phpstudy 8 + php7.3 + thinkphp6 配置xdebug調試

windows phpstorm 2024 phpstudy 8 php7.3 thinkphp6 配置xdebug調試 下載配置phpstudyPhp.ini配置phpstorm配置xdebug運行一會就停了配置虛擬機 0localhost_90.conf 配置php.ini配置下載 在下面地址下載合適的xdebug 放到對應的php https://xdebug.org/wizard 配置phpst…

python的pywebview庫結合Flask和waitress開發桌面應用程序簡介

pywebview的用途與特點 用途 pywebview是一個輕量級Python庫,用于創建桌面應用程序(GUI)。它通過嵌入Web瀏覽器組件(如Windows的Edge/IE、macOS的WebKit、Linux的GTK WebKit),允許開發者使用HTML/CSS/Java…

C#通過HslCommunication連接西門子PLC1200,并防止數據跳動的通用方法

textEdit30.Text ReadValue<int>(() > plc.ReadInt32("DB57.DBD16"), ref _last_num).ToString();// 通用讀取方法&#xff08;支持所有值類型&#xff09;private T ReadValue<T>(Func<OperateResult<T>> readFunc, ref T lastValue) w…

Linux切換到Jenkins用戶解決Jenkins Host key verification failed

以root或sudo user身份, 切換到jenkins用戶 su -s /bin/bash jenkins前往jenkins的home目錄 cd /var/lib/jenkins/查看.ssh下是否已經有known_hosts, 有的話, 是什么內容, 正常情況下, 這時候是沒有對應IP記錄的 cd .ssh/ more known_hosts訪問一下對應IP, 記錄公鑰 ssh 192.16…

7.17 Java基礎 | 集合框架(下)

接上文&#xff1a; 7.16 Java基礎 | 集合框架&#xff08;上&#xff09;-CSDN博客 【1】Map集合 Map 集合是一種能存儲鍵值對的數據結構。它的主要功能是依據鍵&#xff08;Key&#xff09;來快速查找對應的值&#xff08;Value&#xff09; 1、聲明 Map<Integer,Integer…

【LeetCode刷題指南】--反轉鏈表,鏈表的中間結點,合并兩個有序鏈表

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》《C語言刷題集》《Leetcode刷題指南》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的…

ubuntu上面的wps2019格式很亂在復制粘貼的時候

問題&#xff1a;在復制內容到 Ubuntu 上的 WPS 2019 出現如下問題&#xff1a;列表符號、換行和縮進錯亂&#xff0c;表現為每行前的點符號&#xff08;?&#xff09;變成不規則對齊或空格間距不統一。原因分析? 主要原因是&#xff1a;WPS 2019 在 Ubuntu 上的兼容性較差&a…

bws-rs:Rust 編寫的 S3 協議網關框架,支持靈活后端接入

bws-rs&#xff1a;Rust 編寫的 S3 協議網關框架&#xff0c;支持靈活后端接入 bws-rs介紹 bws-rs 是一個用 Rust 編寫的輕量級 S3 協議服務端網關框架&#xff0c;旨在幫助開發者快速構建兼容 AWS S3 協議 的對象存儲服務。該框架支持 S3 V4 簽名校驗&#xff0c;集成 Axum 作…