首页 > 其他分享 >gin框架学习

gin框架学习

时间:2023-02-21 14:11:32浏览次数:30  
标签:http Context 框架 GET 学习 func gin main

Gin框架

web开发本质

go mod init 项目名
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func sayHello(w http.ResponseWriter,r *http.Request){
	b,_:=ioutil.ReadFile("./hello.txt")
	_,_=fmt.Fprintln(w,string(b))
}

func main() {
	http.HandleFunc("/hello",sayHello)
	err:=http.ListenAndServe(":8080",nil)
	if err!=nil{
		fmt.Println("http serve failed...")
		return
	}
	
}

image-20230220235110289

gin框架初识

下载

go get -u github.com/gin-gonic/gin
package main

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

func sayHello(c *gin.Context){
	c.JSON(200,gin.H{
		"message":"hello golang",
	})
}

func main() {
	r:=gin.Default()
	r.GET("hello",sayHello)
	//启动服务
	r.Run()
}

image-20230221001334792

gin框架返回json

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

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

	// gin.H 是map[string]interface{}的缩写
	r.GET("/someJSON", func(c *gin.Context) {
		// 方式一:自己拼接JSON
		c.JSON(http.StatusOK, gin.H{"message": "Hello world!"})
	})
	r.GET("/moreJSON", func(c *gin.Context) {
		// 方法二:使用结构体
		var msg struct {
			Name    string `json:"user"`
			Message string
			Age     int
		}
		msg.Name = "小王子"
		msg.Message = "Hello world!"
		msg.Age = 18
		c.JSON(http.StatusOK, msg)
	})
	r.Run(":8080")
}

image-20230221003139114

gin返回query参数

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/web", func(ctx *gin.Context) {
		name := ctx.Query("query")
		age := ctx.Query("age")
		ctx.JSON(http.StatusOK, gin.H{
			"name": name,
			"age":  age,
		})
	})
	r.Run()
}

image-20230221005234832

获取form表单参数

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.LoadHTMLFiles("./login.html")
	r.GET("/login",func(ctx *gin.Context) {
		ctx.HTML(http.StatusOK,"login.html",nil)
	})

	
	r.POST("/login", func(c *gin.Context) {
		// DefaultPostForm取不到值时会返回指定的默认值
		//username := c.DefaultPostForm("username", "小王子")
		username := c.PostForm("username")
		address := c.PostForm("address")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})
	
	
	
	err := r.Run()
	if err != nil {
		return
	}
}

image-20230221095628538

image-20230221095649084

获取url路径参数

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/user/:username/:age", func(c *gin.Context) {
		username := c.Param("username")
		age := c.Param("age")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
			"message":  "ok",
			"username": username,
			"address":  age,
		})
	})

	err := r.Run()
	if err != nil {
		return
	}
}

image-20230221100922648

gin框架使用参数绑定(json)

package main

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	type Login struct {
		User     string `form:"user" json:"user" binding:"required"`
		Password string `form:"password" json:"password" binding:"required"`
	}

	r.POST("/json", func(c *gin.Context) {
		var login Login

		if err := c.ShouldBind(&login); err == nil {
			fmt.Printf("login info:%#v\n", login)
			c.JSON(http.StatusOK, gin.H{
				"user":     login.User,
				"password": login.Password,
			})
		} else {
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
		}
	})

	err := r.Run()
	if err != nil {
		return
	}
}
image-20230221105357180

gin框架重定向

package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	//http重定向
	r.GET("/test", func(c *gin.Context) {
		c.Redirect(http.StatusMovedPermanently, "https://www.baidu.com/")
	})
	r.GET("/test2", func(c *gin.Context) {
		// 指定重定向的URL
		c.Request.URL.Path = "/test3"
		r.HandleContext(c)
	})
	r.GET("/test3", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{"hello": "world"})
	})

	err := r.Run()
	if err != nil {
		return
	}
}

image-20230221111455424

gin框架路由组

func main() {
	r := gin.Default()
	userGroup := r.Group("/user")
	{
		userGroup.GET("/index", func(c *gin.Context) {...})
		userGroup.GET("/login", func(c *gin.Context) {...})
		userGroup.POST("/login", func(c *gin.Context) {...})

	}
	shopGroup := r.Group("/shop")
	{
		shopGroup.GET("/index", func(c *gin.Context) {...})
		shopGroup.GET("/cart", func(c *gin.Context) {...})
		shopGroup.POST("/checkout", func(c *gin.Context) {...})
	}
	r.Run()
}

标签:http,Context,框架,GET,学习,func,gin,main
From: https://www.cnblogs.com/hwq1009/p/17140762.html

相关文章

  • python+playwright 学习-3.页面操作Action
    前言Playwright可以与HTML输入元素交互,例如文本输入、复选框、单选按钮、选择选项、鼠标单击、键入字符、键和快捷方式以及上传文件和焦点元素。fill()输入文字使用......
  • Python 学习记录
    前言Python3.5安装步骤Python官网Pycharm第一个程序.pyprint("hellopython")基本语法type(a)=数据类型整数(在线进制转换)定义a=12Python可以......
  • python+playwright 学习-2.Selector 选择器定位元素
    前言Selector选择器,也就是通常说的元素定位了,页面上点点点的操作,都是基于元素定位,所以这块是重点需要学的核心内容。Selector选择器说到元素定位,大家肯定会首先想到s......
  • 系统性能调优学习笔记04
    使用cgroup管理资源限制1、管理资源限制1.1使用ulimit限制系统资源限制系统资源早期使用的方法是ulimit命令,设置的限制是系统范围的,并在登录和会话启动时由PAM模块进行验证......
  • JWT学习笔记
    JWT学习笔记JWT介绍jwt官网:https://jwt.io/百度:JWT(JSONWEBToken)的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也......
  • nginx.conf 配置解析及常用配置
    本文为博主原创,未经允许不得转载:nginx.conf 配置文件配置解析#定义Nginx运行的用户和用户组。默认nginx的安装用户为nobodyuserwwwwww;#启动进程,通常......
  • nginx 常用命令
    本文为博主原创,未经允许不得转载:1. 查看nginx进程ps-ef|grepnginx2. 平滑启动nginx:平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的......
  • git,repo学习
    Repo:就是一组git命令的集合,repoinit下载一个分支。repostart文件名--all本地传建的另一个代码分支,用于备份作用。比如:repostartzhao--allgit brach查看当前......
  • Nginx Location 深入剖析及动静分离简易配置
    本文为博主原创,未经允许不得转载:1. location 使用分析location是Nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不......
  • 搭建 spring boot + mybatis plus 项目框架并进行调试
    本文为博主原创,未经允许不得转载:1.创建一个spring boot的工程应用:File---->New----->Project----> 然后选中SpringInitializr 继续创建:  2.添加sprin......