首页 > 其他分享 >二、Gin路由

二、Gin路由

时间:2023-06-12 22:36:08浏览次数:37  
标签:handlers relativePath IRoutes func RouterGroup Gin 路由

二、Gin路由

2.1、路由方法

路由系统支持任意方式的请求,如下的的方法用来提供对应的接受请求:

func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes
// 任意路由
func (group *RouterGroup) ANY(relativePath string, handlers ...HandlerFunc) IRoutes
// DELETE方法添加一个新的路由处理程序,它将使用DELETE方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes

// GET方法添加一个新的路由处理程序,它将使用GET方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes

// HEAD方法添加一个新的路由处理程序,它将使用HEAD方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes

// OPTIONS方法添加一个新的路由处理程序,它将使用OPTIONS方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes

// PATCH方法添加一个新的路由处理程序,它将使用PATCH方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes

// POST方法添加一个新的路由处理程序,它将使用POST方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes

// PUT方法添加一个新的路由处理程序,它将使用PUT方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes

// ANY方法添加一个新的路由处理程序,它将使用任何方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) ANY(relativePath string, handlers ...HandlerFunc) IRoutes

案例:

package main

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

/*
GET("/book") 路由处理针对 "/book" 路径的 GET 请求。
POST("/book") 路由处理针对 "/book" 路径的 POST 请求。
PUT("/book") 路由处理针对 "/book" 路径的 PUT 请求。
DELETE("/book") 路由处理针对 "/book" 路径的 DELETE 请求。
*/

func main() {
	r := gin.Default()
	// get请求
	r.GET("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "GET",
		})
	})

	// post请求
	r.POST("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "POST",
		})
	})

	// put请求
	r.PUT("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "PUT",
		})
	})

	// delete请求
	r.DELETE("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "DELETE",
		})
	})

	// 路由匹配不成功
	r.NoRoute(func(c *gin.Context) {
		//http.StatusNotFound等同于404
		c.HTML(http.StatusNotFound, "404.html", nil)
		c.HTML(404, "404.html", nil)
	})
}

2.2、路由分组

路由分组用于将多个路由进行统一的处理

// 书籍相关的路由
bookRoute := r.Group("/books")
{
  bookRoute.GET("/", GetBook)
	bookRoute.POST("/add", AddBook)
	bookRoute.GET("/edit", EditBook)
	bookRoute.GET("/delete", DeleteBook)
}

// 出版社相关的路由
publishRoute := r.Group("/publish")
{
    publishRoute.GET("/", GetPublish)
	publishRoute.POST("/add", AddPublish)
	publishRoute.GET("/edit",EditPublish)
	publishRoute.GET("/delete",DeletePublish)
}

 

标签:handlers,relativePath,IRoutes,func,RouterGroup,Gin,路由
From: https://www.cnblogs.com/xiaohaoge/p/17476269.html

相关文章

  • AtCoder Beginner Contest 265 F Manhattan Cafe
    洛谷传送门AtCoder传送门考虑dp,\(f_{i,j,k}\)表示考虑到第\(i\)维,\(\sum\limits_{x=1}^i|p_x-r_x|=j,\sum\limits_{x=1}^i|q_x-r_x|=k\)的方案数。转移是容易的,枚举\(r_i\)即可,\(f_{i,j,k}=\sum\limits_rf_{i-1,j-|p_i-r|,k-|q_i-r|}......
  • 一、Gin开篇
    一、Gin开篇1.1、web应用程序packagemainimport( "fmt" "net")funcmain(){ listener,err:=net.Listen("tcp","127.0.0.1:8888") iferr!=nil{ fmt.Println(err) return } deferlistener.Close() //2、服务器不断等待......
  • ELK分析Nginx日志和可视化展示
    ELK分析Nginx日志和可视化展示JAVA编程Linux学习 2023-06-0508:35 发表于山东收录于合集#nginx5个#nginx日志可视化1个#nginx日志1个一、概述使用ELK收集nginxaccess日志,利用Grafana做出一套可视化图表 二、环境准备环境说明操作系统:centos7.6docker......
  • Atcoder Beginner Contest 301
    A-OverallWinner题目大意A和T两人玩游戏,给定一串只由A和T组成的字符串,如果第i个字符是A,则A赢得第i轮的胜利,反之则T赢;当遍历完整个字符串后,谁赢的轮数多谁就是最终赢家,如果一样则谁最先达到该轮数谁赢,输出赢家的名字解题思路签到题不多嗦了神秘代码......
  • vuex使用,Router的使用,多级路由
    vuex使用:vuex:状态管理器--->存数据(变量)的地方,所有组件都可以操作1.概念在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。基本使用:1.在Home......
  • AtCoder Beginner Contest 278 ABCDE
    AtCoderBeginnerContest278A-ShiftProblemStatement题意:给你一个长度为n的序列,让你移走前面k个后面补k个0。Solution思路:按照题意模拟即可。#include<bits/stdc++.h>usingnamespacestd;inta[1100];intmain(){ intn,k; cin>>n>>k; k=min(k,n); for(int......
  • UNIQUE VISION Programming Contest 2023 New Year (AtCoder Beginner Contest 287) A
    UNIQUEVISIONProgrammingContest2023NewYear(AtCoderBeginnerContest287)A-MajorityProblemStatement题意:给你n个字符串,字符串是For表示agree,字符串Against表示disagree,让你判断最终是否通过。Solution思路:统计For和Against的数量,比较一下即可。#include......
  • AtCoder Beginner Contest 284 ABCDE
    AtCoderBeginnerContest284A-SequenceofStringsProblemStatement题意:给你n个字符串,让你倒序输出Solve#include<bits/stdc++.h>usingnamespacestd;constintN=20;strings[N];intmain(){ intn; cin>>n; for(inti=1;i<=n;i++) cin>>s......
  • 【Azure 环境】使用az login登录遇见OSError: [WinError -2146893813] : '' 错误
    问题描述使用azlogin指令登录,遇见OSError:[WinError-2146893813]:'',在指令中添加--debug后,输出的错误消息为:urllib3.connectionpool:StartingnewHTTPSconnection(1):*****.******.com:443urllib3.connectionpool:https://****.****.com:443"POST/adfs/ser......
  • 【Nginx学习笔记】-初识Nginx
    目录Nginx特点Nginx基本功能Nginx使用场景Nginx安装/卸载Docker方式运行Ubuntu上安装卸载NginxNginx命令Nginx目录结构Nginx热部署Nginx运行原理Master-Worker模式Nginx如何做到高并发下的高效处理?Nginx高可用Nginx中文文档-https://www.nginx.cn/doc/Nginx("enginex"......