首页 > 其他分享 >Golang Gin 初识

Golang Gin 初识

时间:2023-11-21 23:22:30浏览次数:27  
标签:http Context GET Golang 初识 StatusOK func gin Gin

1.Gin框架搭建,初识

  1 // main.go
  2 package main
  3 
  4 /***
  5     Gin入门:
  6         文档: https://gin-gonic.com/zh-cn/docs/quickstart/
  7     热加载:
  8         文档: https://github.com/cosmtrek/air/blob/master/README-zh_cn.md
  9         安装: go install github.com/cosmtrek/air@latest
 10         配置: alias air='/home/chad/golang/workspace/bin/air'
 11         初始化: 1. cd yourworkspace
 12             2. air -c .air.toml
 13                 3. air init
 14                 4. air
 15 ***/
 16 
 17 import (
 18     "net/http"
 19 
 20     "github.com/gin-gonic/gin"
 21 )
 22 
 23 // 快速入门
 24 func main1() {
 25     // 创建默认路由引擎
 26     r := gin.Default()
 27 
 28     // 配置路由
 29     r.GET("/", func(c *gin.Context) {
 30         c.String(http.StatusOK, "Value:%v", "Hello word!")
 31     })
 32 
 33     r.GET("/new", func(c *gin.Context) {
 34         c.String(http.StatusOK, "Value:%v", "我是新页面!")
 35     })
 36 
 37     r.GET("/new1", func(c *gin.Context) {
 38         c.String(http.StatusOK, "Value:%v", "我是新页面1!")
 39     })
 40 
 41     r.POST("/add", func(c *gin.Context) {
 42         c.String(http.StatusOK, "我是POST请求:%v", "主要用来新增数据!")
 43     })
 44 
 45     r.PUT("/edit", func(c *gin.Context) {
 46         c.String(http.StatusOK, "我是PUT请求:%v", "主要用来编辑数据!")
 47     })
 48 
 49     r.DELETE("/delete", func(c *gin.Context) {
 50         c.String(http.StatusOK, "我是DELETE请求:%v", "主要用来删除数据!")
 51     })
 52     r.Run("0.0.0.0:8000") // 默认监听 0.0.0.0:8080 上启动服务
 53 }
 54 
 55 func main() {
 56     TestResponseHTML() // 返回HTML
 57     // TestResponseJsonXML()  // 返回Json丶Xml数据
 58 }
 59 
 60 type UserInfo struct {
 61     UserID   string `json:"userid"`
 62     UserName string
 63     Age      int
 64 }
 65 
 66 type Article struct {
 67     Title   string `json:"title"`
 68     Content string `json:"content"`
 69 }
 70 
 71 // TestResponseHTML  返回HTML
 72 func TestResponseHTML() {
 73     router := gin.Default()
 74     // 配置模板路径
 75     router.LoadHTMLGlob("templates/*")
 76     // router.LoadHTMLFiles("templates/template1.html", "templates/template2.html", )
 77 
 78     router.GET("/news", func(c *gin.Context) {
 79         data := &Article{
 80             Title:   "新闻标题",
 81             Content: "新闻内容",
 82         }
 83         c.HTML(http.StatusOK, "news.html", gin.H{
 84             "title": "我是后台数据",
 85             "news":  data,
 86         })
 87     })
 88 
 89     router.Run("0.0.0.0:8080")
 90 
 91 }
 92 
 93 // 如何返回Json丶Xml数据
 94 func TestResponseJsonXML() {
 95     r := gin.Default()
 96 
 97     r.GET("/", func(c *gin.Context) {
 98         c.String(http.StatusOK, "首页")
 99     })
100 
101     r.GET("/json", func(c *gin.Context) {
102         c.JSON(http.StatusOK, map[string]interface{}{
103             "success": true,
104             "msg":     "你好gin.",
105         })
106     })
107 
108     r.GET("/json2", func(c *gin.Context) {
109         c.JSON(http.StatusOK, gin.H{
110             "success": true,
111             "msg":     "你好gin.  --22",
112         })
113     })
114 
115     r.GET("/json3", func(c *gin.Context) {
116         us := &UserInfo{
117             UserID:   "100",
118             UserName: "zhangsan",
119             Age:      18,
120         }
121         c.JSON(http.StatusOK, us)
122     })
123 
124     // jsonp  主要用来解决跨域问题
125     //       http://localhost:8080/jsonp?callback=xxx
126     //         xxx({"userid":"100","UserName":"zhangsan","Age":18});
127     r.GET("/jsonp", func(c *gin.Context) {
128         us := &UserInfo{
129             UserID:   "100",
130             UserName: "zhangsan",
131             Age:      18,
132         }
133         c.JSONP(http.StatusOK, us)
134     })
135 
136     r.GET("/xml", func(c *gin.Context) {
137         // gin.H = map[string]interface{}
138         c.XML(http.StatusOK, map[string]interface{}{
139             "success": true,
140             "msg":     "你好gin.",
141         })
142     })
143 
144     r.GET("/xml2", func(c *gin.Context) {
145         us := &UserInfo{
146             UserID:   "100",
147             UserName: "zhangsan",
148             Age:      18,
149         }
150         c.XML(http.StatusOK, us)
151     })
152     r.Run("0.0.0.0:8080")
153 }

 

 

2.HTML渲染

 1 // templates/news.html
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 
 5 <head>
 6     <meta charset="UTF-8">
 7     <meta name="viewport" content="width=<device-width>, initial-scale=1.0">
 8     <title>Document</title>
 9 </head>
10 
11 <body>
12     <h2>我是首页 </h2>
13     <h2>{{.title}} </h2>
14     <hr>
15     <p>{{.news.Title}}</p>
16     <p>{{.news.Content}}</p>
17 </body>
18 
19 </html>

 

标签:http,Context,GET,Golang,初识,StatusOK,func,gin,Gin
From: https://www.cnblogs.com/watermeloncode/p/17847883.html

相关文章

  • nginx出现很多进程,怎么杀掉进程。
    linux关闭nginx的方法:1、利用“ps-ef|grepnginx”命令查看nginx进程后,利用“kill-QUIT进程号”关闭nginx即可;2、利用“kill-TERM 999”快速杀死进程即可;3、利用“pkill-9nginx”强行停止进程即可。4、利用“kill-9 999”杀死进程5、查找进程ps-ef|grepnginx|g......
  • huggingface下载的.arrow数据集读取与使用说明
    huggingface下载的.arrow数据集读取与使用说明fromdatasetsimportload_from_diskfromdatasetsimportload_datasetdataset_cnn=load_dataset("ccdv/cnn_dailymail",'3.0.0',cache_dir=&qu......
  • AtCoder Beginner Contest(abc) 326
    B-326-likeNumbers难度:⭐题目大意如果一个三位数的百位和十位的乘积等于个位,那么这个数就是合法的;问大于等于n的最小的合法的数是多少;解题思路因为数据范围很小,所以可以直接暴力;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios......
  • nginx安装
    1.安装、cd/usr/nginxwgethttp://nginx.org/download/nginx-1.9.2.tar.gztar-xzvfnginx-1.9.2.tar.gzcd/usr/nginx/nginx-1.9.2./configure--prefix=/usr/local/nginx-1.9.2--with-http_ssl_module--with-http_stub_status_modulemake&&makeinstall2......
  • nginx遇到的坑
    1)自定义请求头获取不到请求头request_token中包含'_'字符,会nginx过滤掉。默认情况下,underscores_in_headers为off,表示当客户端请求头中带有下划线的字段默认将会被标识为无效字段。解决方案添加如下配置:http{underscores_in_headerson;}2)nginx没有透传host请求头,tomcat......
  • AtCoder Beginner Contest 329
    C-Countxxx题意是:给你一个字符串,求出字符串里面相同字母的子串数量思路:用map映射即可,取每个字母的最大长度,然后加起来usingnamespacestd;intmain(){ intn; strings; cin>>n>>s; map<char,int>mp; intct=1; for(inti=1;i<n;i++){ if(s[i]!=s[i-1]){ mp[s[......
  • nginx+keepalived+http高可用和负载均衡:(实验)
    1.先NGINX负载均衡(2台)一模一样,客户端设置域名解析,负载均衡器的名称www.web.com YJ.li容器 数据库 自动化 网站架构 管理Nginx-keepalived+Nginx实现高可用集群 Keepalived+Nginx高可用集群(主从模式)#集群架构图:说明:Keepalived机器同样是nginx......
  • Nginx+keepalived实现nginx高可用
    1,keepalived工作原理nginx的安装已有现成文档,就不重新编写文档了本文讲述主、从服务器各一台2,主、从服务器上安装keepalived1.使用yum安装keepalivedyum-yinstallkeepalived2.查看keepalived是否安装成功,出现版本即成功rpm-q-akeepalived3,主、从服务器上修改kee......
  • 【golang】【注释模版】
    @目录写在前面注释要求package结构体方法代码逻辑注释参考资料基础/标准库/第三方库golang导航编程规范算法|面试项目写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。注释要求统......
  • 【gin】项目
    @目录写在前面blogs项目目录config文件配置项.ymlglobalmiddlewaremodelsroutersruntimeutils参考资料写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。blogs项目目录目......