golang 安裝gin包、創建路由基本總結

文章目錄

  • 一、安裝gin包和熱加載包
  • 二、路由簡單場景總結


一、安裝gin包和熱加載包

  1. 首先終端新建一個main.go
  2. 然后go mod init ‘項目名稱’
  3. 執行以下命令 安裝gin包
go get -u github.com/gin-gonic/gin
  1. 終端安裝熱加載包
go get github.com/pilu/fresh
  1. 終端輸入fresh 運行 ,之后文件的改動,項目自動重新熱加載
fresh
  1. 簡單示例代碼
package mainimport ("github.com/gin-gonic/gin"
)
func main (){r := gin.Default() // 創建一個路由引擎// 配置路由r.GET("/", func(c *gin.Context) {c.String(200, "你好,gin")})
}

二、路由簡單場景總結

  1. 返回string數據
    /*1.創建路由*/r := gin.Default() // 創建一個路由引擎// 配置路由r.GET("/", func(c *gin.Context) {c.String(200, "你好,gin")})// 返回string數據r.POST("/ping", func(c *gin.Context) {c.String(http.StatusOK, "你好,gin") //http.StatusOK 表示200的狀態碼})
  1. 返回json數據
  r.GET("/json", func(c *gin.Context) {//gin.H是 map[string]interface{} 的類型別名:用于快速創建鍵值對形式JSONc.JSON(http.StatusOK, gin.H{"code": 200,"data": gin.H{"name": "張三","age":  18,},})})
  1. 返回結構體
	type Article struct {Title   string `json:"title"` //json序列化時的鍵名,Title在json中以小寫展示Desc    string `json:"desc"`Content string `json:"content"`}r.GET("/json1", func(c *gin.Context) {a := &Article{Title: "標題", Desc: "描述", Content: "內容"} //使用指針是避免每次都要拷貝結構體,不使用指針也可以訪問數據//gin.H是 map[string]interface{} 的類型別名:用于快速創建鍵值對形式JSONc.JSON(http.StatusOK, gin.H{"code": 200,"data": a,})})
  1. jsonp返回
   type Article struct {Title   string `json:"title"` //json序列化時的鍵名,Title在json中以小寫展示Desc    string `json:"desc"`Content string `json:"content"`}// http://localhost:8080/jsonp?callback=xxx//返回 xxx({"code":200,"data":{"title":"標題-jsonp","desc":"描述","content":"內容"}});r.GET("/jsonp", func(c *gin.Context) {a := &Article{Title: "標題-jsonp", Desc: "描述", Content: "內容"}//gin.H是 map[string]interface{} 的類型別名:用于快速創建鍵值對形式JSONc.JSONP(http.StatusOK, gin.H{"code": 200,"data": a,})})
  1. 返回XML
  r.GET("/xml", func(c *gin.Context) {c.XML(http.StatusOK, gin.H{"code":  200,"title": "小米SU7",})})
  1. 返回模版 html
   	/*向html中傳入普通數據*/r.GET("/html", func(c *gin.Context) {c.HTML(http.StatusOK, "goods.html", gin.H{ "code": 200,"title": `小米SU7`,})/*html中使用 .title接收*/<h1 class="text-center my-4">{{.title}}</h1>
   /*向html中傳入傳入結構體*/r.GET("/html", func(c *gin.Context) {b := &Article{Title: "小米SU7年輕人的第一輛車", Desc: "描述", Content: "內容"} c.HTML(http.StatusOK, "goods.html", gin.H{"code":  "200","data":  b,})})/* 結構體賦值變量  $t */{{$t := .data.Title}}<h3>{{$t}}</h3>/* 解構結構體  with */{{with .data}}<p>{{.Title}}</p>{{end}}
	/*向html中傳入變量,模版條件判斷*/r.GET("/html", func(c *gin.Context) {c.HTML(http.StatusOK, "goods.html", gin.H{"code":  "200","price": 50,})})<!-- 條件判斷 eq 相等 / ne 不相等 /  gt 大于 / lt 小于 / ge 大于等于 / le 小于等于 -->{{if ge .price 80}}<p>有點貴:{{.price}}</p>{{else if lt .price 10}}<p>有點便宜:{{.price}}</p>{{else}}<p>價格:{{.price}}</p>{{end}}
       /*html中傳入切片,模版循環遍歷數據*/r.GET("/html", func(c *gin.Context) {c.HTML(http.StatusOK, "goods.html", gin.H{"code":  "200","hobby": []string{"小米", "SU7", "YU7"},})})<!-- 循環遍歷數據 -->{{range $key,$value := .hobby}}<li>{{$key}}---{{$value}}</li>{{else}}<p>沒有數據</p>{{end}}

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

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

相關文章

【數據結構篇】鏈式結構二叉樹

目錄&#xff1a; 一 二叉鏈的概念與結構&#xff1a; 1.1 概念&#xff1a; 1.2 結構&#xff1a; 二 二叉鏈的實現&#xff1a; 2.1 二叉樹的構建&#xff1a; 2.2 二叉樹的遍歷&#xff1a; 2.2.1 前序遍歷&#xff1a; 2.2.2 中序遍歷&#xff1a; 2.2.3 后序遍歷…

【MySQL】02.數據庫基礎

1. 數據庫的引入 之前存儲數據用文件就可以了&#xff0c;為什么還要弄個數據庫? 文件存儲存在安全性問題&#xff0c;文件不利于數據查詢和管理&#xff0c;文件不利于存儲海量數據&#xff0c;文件在程序中控制不方便。而為了解決上述問題&#xff0c;專家們設計出更加利于…

什么是 Langchain 以及其核心組件

LangChain 官方文檔&#xff1a;LangChain 一、什么是Langchain LangChain 是一個用于構建基于LLM的應用框架&#xff0c;它提供了對 LLM API 的封裝和擴展&#xff0c;使開發者能夠更方便地構建復雜的應用。 個人理解&#xff1a;用類比的方法來說&#xff0c;LangChain類似…

博客系統功能測試

博客系統網址&#xff1a;http://8.137.19.140:9090/blog_list.html 主要測試內容 功能測試、界面測試、性能測試、易用性測試、安全測試、兼容性測試、弱網測試、安裝卸載測試、壓力測試… 測試方法及目的 利用selenium和python編寫測試腳本&#xff0c;對博客系統進行的相關…

項目制作流程

一、使用 CRA 創建項目 npx create-react-app name 二、按照業務規范整理項目目錄 &#xff08;重點src目錄&#xff09; 三、安裝插件 npm install sass -Dnpm install antd --savenpm install react-router-dom 四、配置基礎路由 Router 1. 安裝路由包 react-router-dom …

ngx_http_random_index_module 模塊概述

一、使用場景 隨機內容分發 當同一目錄下存放多份等價內容&#xff08;如多張輪播圖、不同版本靜態頁面等&#xff09;時&#xff0c;可通過隨機索引實現負載均衡或流量分散。A/B 測試 通過目錄請求自動隨機分配用戶到不同測試組&#xff0c;無需后端邏輯參與。動態“首頁”選…

智能權限守護者:基于Python描述符的動態角色控制實現

智能權限守護者:基于Python描述符的動態角色控制實現 引言:當描述符遇見權限管理 在Python的魔法方法體系中,描述符(Descriptor)以其優雅的屬性訪問控制機制著稱。當我們將描述符與RBAC(基于角色的訪問控制)模型結合,就能創造出既靈活又安全的動態權限管理系統。本文…

Linux 的 UDP 網絡編程 -- 回顯服務器,翻譯服務器

目錄 1. 回顯服務器 -- echo server 1.1 相關函數介紹 1.1.1 socket() 1.1.2 bind() 1.1.3 recvfrom() 1.1.4 sendto() 1.1.5 inet_ntoa() 1.1.6 inet_addr() 1.2 Udp 服務端的封裝 -- UdpServer.hpp 1.3 服務端代碼 -- UdpServer.cc 1.4 客戶端代碼 -- UdpClient.…

Linux 內核等待機制詳解:prepare_to_wait_exclusive 與 TASK_INTERRUPTIBLE

1. prepare_to_wait_exclusive 函數解析 1.1 核心作用 prepare_to_wait_exclusive 是 Linux 內核中用于將進程以獨占方式加入等待隊列的關鍵函數,其主要功能包括: 標記獨占等待:通過設置 WQ_FLAG_EXCLUSIVE 標志,表明此等待條目是獨占的。 安全入隊:在自旋鎖保護下,將條…

【Android構建系統】了解Soong構建系統

背景介紹 在Android7.0之前&#xff0c;Android使用GNU Make描述和執行build規則。Android7.0引入了Soong構建系統&#xff0c;彌補Make構建系統在Android層面變慢、容易出錯、無法擴展且難以測試等缺點。 Soong利用Kati GNU Make克隆工具和Ninja構建系統組件來加速Android的…

信息學奧賽一本通 1539:簡單題 | 洛谷 P5057 [CQOI2006] 簡單題

【題目鏈接】 ybt 1539&#xff1a;簡單題 洛谷 P5057 [CQOI2006] 簡單題 【題目考點】 1. 樹狀數組 模板題及講解&#xff1a;洛谷 P3374 【模板】樹狀數組 【解題思路】 解法1&#xff1a;樹狀數組 該有01構成數組初值都為0。 某位置的元素被修改奇數次后值為1&#x…

倉頡開發語言入門教程:搭建開發環境

倉頡開發語言作為華為為鴻蒙系統自研的開發語言&#xff0c;雖然才發布不久&#xff0c;但是它承擔著極其重要的歷史使命。作為鴻蒙開發者&#xff0c;掌握倉頡開發語言將成為不可或缺的技能&#xff0c;今天我們從零開始&#xff0c;為大家分享倉頡語言的開發教程&#xff0c;…

玉米籽粒發育

成熟玉米籽粒的結構 玉米籽粒的組成 成熟的玉米籽粒主要由以下三部分組成&#xff1a; 母體組織&#xff1a;包括種皮、胎座和花梗。種皮由珠被發育而來&#xff0c;起到保護種子的作用&#xff0c;并在種子的休眠和萌發中發揮重要作用。胚&#xff1a;包含根分生組織、莖分…

sherpa-ncnn:音頻處理跟不上采集速度 -- 語音轉文本大模型

目錄 1. 問題報錯2. 解決方法 1. 問題報錯 報錯&#xff1a; An overrun occurred, which means the RTF of the current model on your board is larger than 1. You can use ./bin/sherpa-ncnn to verify that. Please select a smaller model whose RTF is less than 1 fo…

Postman一直打不開的解決辦法

Postman 是一款非常流行的開源 API 開發工具&#xff0c;主要用于構建、測試、調試和文檔化應用程序接口&#xff08;API&#xff09;。但有時它的性能不會特別穩定&#xff0c;功能限制和擴展性不足&#xff1b;應用于開發、測試、運維等環節&#xff0c;尤其在開發 RESTful A…

問題|對只允許輸入的變量是否進行了更改

“對只允許輸入的變量是否進行了更改”這一問題的核心是&#xff1a;在編程中&#xff0c;某些變量被設計為僅用于輸入&#xff08;只讀&#xff09;&#xff0c;但在代碼中可能被意外修改&#xff0c;導致潛在錯誤。以下是詳細解釋&#xff1a; 1. 什么是“只允許輸入的變量”…

RPC與SOAP的區別

一.RPC&#xff08;遠程過程調用&#xff09;和SOAP&#xff08;簡單對象訪問協議&#xff09;均用于實現分布式系統中的遠程通信&#xff0c;但兩者在設計理念、協議實現及應用場景上存在顯著差異。 二.對比 1.設計理念 2.協議規范 3.技術特性 4.典型應用場景 5.總結 三.總結…

c#的內存指針操作(僅用于記錄)

c#也可以直接操作內存指針&#xff0c;如下為示例&#xff1a; unsafe {byte[] a {1,2,3};fixed (byte* p1 a, p2 &a[^1]){Debugger.Log(1, "test", $"max index:{p2-p1}");Debugger.Log(1, "test", $"address:{(long)p1:X}")…

Jsp技術入門指南【十三】基于 JSTL SQL 標簽庫實現 MySQL 數據庫連接與數據分頁展示

Jsp技術入門指南【十三】基于 JSTL SQL 標簽庫實現 MySQL 數據庫連接與數據分頁展示 前言一、回顧SQL標簽的內容1. 什么是JSTL SQL標簽&#xff1f;2.為什么要用SQL標簽&#xff1f;3.第一步&#xff1a;引入SQL標簽庫4. SQL標簽的核心功能&#xff1a;連接數據庫標簽常用屬性&…

羽毛球訂場小程序源碼介紹

基于ThinkPHP、FastAdmin以及UniApp開發的羽毛球訂場小程序源碼&#xff0c;這款小程序旨在為羽毛球愛好者提供便捷的場地預訂服務。 該小程序前端采用UniApp框架開發&#xff0c;具有良好的跨平臺兼容性&#xff0c;可以一鍵發布至iOS和Android平臺&#xff0c;極大地提高了開…