返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >二、Gin 路由(Route)和获取请求参数的方法
  • 392
分享到

二、Gin 路由(Route)和获取请求参数的方法

2024-04-02 19:04:59 392人浏览 独家记忆
摘要

路由(Route)方法 支持方法 路由方法有 GET, POST, PUT, PATCH, DELETE 和 OPTioNS,当然匹配所有类型的请求方法是 Any package main import ( "GitHu

路由(Route)方法

支持方法

路由方法有 GET, POST, PUT, PATCH, DELETE 和 OPTioNS,当然匹配所有类型的请求方法是 Any

package main

import (
    "GitHub.com/gin-Gonic/gin"
)

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

    r.Any("/ping", anything)
    // r.POST("/post", posting)
	// r.PUT("/put", putting)
	// r.DELETE("/delete", deleting)
	// r.PATCH("/patch", patching)
	// r.HEAD("/head", head)
	// r.OPTIONS("/options", options)

    r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}

func anything(c *gin.Context) {
    c.JSON(200, gin.H{
        "message": "pong",
    })
}

go run demo.go 启动服务后,执行如下命令:

% curl -X POST "Http://localhost:8080/ping"
{"message":"pong"}

解析动态路径参数

当我们需要动态参数的路由时,如 /user/:id,通过调用不同的参数 :id 动态获取相应的用户信息。其中 /user/:id/*type,*type 的参数为可选。

    r.GET("/user/:id", func(c *gin.Context) {
        id := c.Param("id")
        c.jsON(200, gin.H{
            "id": id,
        })
    })

获取结果

% curl  "http://localhost:8080/user/1" 
{"id":"1"}%

获取参数

1.获取Query参数

    // 匹配 /search?keyWord=xxx&weight=xxx ,weight可选
    r.GET("/search", func(c *gin.Context) {
        keyword := c.Query("keyword")
        weight := c.DefaultQuery("weight", "")
        c.JSON(200, gin.H{
            "keyword": keyword,
            "weight":  weight,
        })
    })

获取结果

% curl  "http://localhost:8080/search?keyword=aaa&weight=xxx"
{"keyword":"aaa","weight":"xxx"}

2.获取POST参数

    // POST application/x-www-fORM-urlencoded
    r.POST("/login", func(c *gin.Context) {
        username := c.PostForm("username")
        pwd := c.PostForm("pwd")
        c.JSON(200, gin.H{
            "username": username,
            "pwd":      pwd,
        })
    })

获取结果

% curl -X POST "http://localhost:8080/login?username=aaa&pwd=bbb"
{"pwd":"","username":""}

3.Query和POST混合参数

    // ### 3.Query和POST混合参数
    r.POST("/any", func(c *gin.Context) {
        id := c.Query("id")
        username := c.PostForm("username")
        pwd := c.DefaultPostForm("pwd", "") // 默认空

        c.JSON(200, gin.H{
            "id":       id,
            "username": username,
            "password": pwd,
        })
    })

获取结果:

% curl -X POST "http://localhost:8080/any?id=1" -d "username=aaa&pwd=bbb"
{"id":"1","password":"bbb","username":"aaa"}% 

4.接收JSON参数

    // ### 4.接收JSON参数
    // 定义接收 User 的结构体
    type User struct {
        Username string `json:"username"`
        Password string `json:"password"`
    }
    r.POST("/json", func(c *gin.Context) {
        var user User
        err := c.BindJSON(&user)
        if err != nil {
            c.JSON(200, gin.H{"code": 400, "msg": "error", "data": nil})
            return
        } else {
            c.JSON(200, gin.H{"code": 0, "msg": "success", "data": user})
        }
    })

获取结果:

# 正常请求
 % curl -H "Content-Type:application/json" -X POST --data '{"username":"aaa","password":"bbb"}' "http://localhost:8080/json"

{"code":0,"data":{"username":"aaa","password":"bbb"},"msg":"success"} 

# 错误请求
% curl -X POST "http://localhost:8080/json"

{"code":400,"data":null,"msg":"error"}  

路由重定向(Redirect)

    // 路由重定向
    r.GET("/goto", func(c *gin.Context) {
        c.Redirect(301, "/ping") // 301 永久重定向
    })

    // 获取路由内容
    r.GET("/index", func(c *gin.Context) {
        c.Request.URL.Path = "/ping"
        r.HandleContext(c)
    })

获取结果:

% curl "http://localhost:8080/index"
{"message":"pong"}                                                            % curl -i "http://localhost:8080/goto"
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=utf-8
Location: /ping
Date: Sun, 29 Nov 2020 11:00:20 GMT
Content-Length: 40

<a href="/ping">Moved Permanently</a>.

总结

Gin 框架的路由相对简单且优雅,所以只需要多加练习就可掌握它们的用法。

--结束END--

本文标题: 二、Gin 路由(Route)和获取请求参数的方法

本文链接: https://lsjlt.com/news/99277.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 二、Gin 路由(Route)和获取请求参数的方法
    路由(Route)方法 支持方法 路由方法有 GET, POST, PUT, PATCH, DELETE 和 OPTIONS,当然匹配所有类型的请求方法是 Any package main import ( "githu...
    99+
    2024-04-02
  • java中springMVC获取请求参数的方法
    目录原生方式获取请求参数控制器方法形参获取请求参数@RequestParam注解@RequestHeader注解@CookieValue注解通过POJO获取请求参数原生方式获取请求参...
    99+
    2023-05-18
    springMVC 请求参数 springMVC 请求
  • javascript获取请求参数的方法是什么
    这篇文章主要讲解了“javascript获取请求参数的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript获取请求参数的方法是什么”...
    99+
    2024-04-02
  • SpringMVC中请求参数的获取方式
    目录SpringMVC请求参数获取方式一、通过 ServletAPI 获取二、通过控制器方法的形参获取处理多个同名的请求参数三、通过 @RequestParam 注解四、@Reque...
    99+
    2024-04-02
  • SpringMVC获取请求参数实现方法介绍
    目录一、通过ServletAPI获取二、通过控制器方法的形参获取请求参数三、@RequestParam四、@RequestHeader五、@CookieValue六、通过POJO获取...
    99+
    2022-11-13
    SpringMVC获取请求参数 SpringMVC请求参数
  • SpringMVC实现获取请求参数方法详解
    目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@RequestHeader5、@CookieValue6、通过POJO获取...
    99+
    2024-04-02
  • HttpServletRequest核心方法以及获取请求参数
    一. 展示HttpServletRequest中一些重要方法 当Tomcat 通过 Socket API 读取 HTTP 请求(字符串), 并且按照 HTTP 协议的格式把字符串解析成HttpServletRequest 对象. 创建一个S...
    99+
    2023-08-21
    tomcat servlet java
  • php 获取请求参数的函数
    在 PHP 中,可以使用 $_GET、$_POST 和 $_REQUEST 来获取请求参数。以下是介绍它们的一些细节: $_GET 用于获取通过 URL 传递的参数,一般用于获取请求方式为 GET ...
    99+
    2023-09-01
    php 开发语言
  • Vue中$router.push()路由切换、传参和获取参数的方法是什么
    这篇文章主要介绍“Vue中$router.push()路由切换、传参和获取参数的方法是什么”,在日常操作中,相信很多人在Vue中$router.push()路由切换、传参和获取参数的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好...
    99+
    2023-07-05
  • springMVC获取请求参数的方式有哪些
    这篇文章主要讲解了“springMVC获取请求参数的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springMVC获取请求参数的方式有哪些”吧!初步认识可以直接在请求地址中给于请...
    99+
    2023-06-29
  • vue如何获取路由上的参数
    具体方法如下:通过query获取路由参数#配置路由<router-link :to="{ name:'login',query:{id:1} }">登录</...
    99+
    2024-04-02
  • Vue怎么获取url路由地址和参数
    这篇“Vue怎么获取url路由地址和参数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么获取url路由地址和参数”文...
    99+
    2023-07-05
  • Express之get,pos请求参数的获取
    Express的版本4.X Get query参数的获取 url假设:http://localhost:3000/users/zqzjs?name=zhaoqize&word=cool&job[st...
    99+
    2022-06-04
    参数 Express pos
  • jquery怎么获取get请求的参数
    JQuery是一款非常流行的JavaScript库,它提供了很多方便快捷的方法来操作DOM,实现动画效果,以及处理AJAX请求等等。本文将着重讨论如何利用JQuery获取GET请求的参数。在Web开发中,GET请求是非常常见的一种HTTP请...
    99+
    2023-05-14
  • jquery如何获取get请求的参数
    本篇内容介绍了“jquery如何获取get请求的参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Web开发中,GET请求是非常常见的一种...
    99+
    2023-07-06
  • 关于vue中路由的跳转和参数传递,参数获取
    目录vue中的路由讲三点html中通过<router-link>指令完成路由跳转第一种情况就是以path形式第二种情况就是以路由对象Object的形式最后谈谈$route...
    99+
    2024-04-02
  • springMVC获取请求参数的几种方式汇总
    目录一、前言二、初步认识三、servletAPI四、方法参数五、@RequestParam六、实体类七、总结一、前言 大家好,我是卷心菜,大二学生一枚。 大家在学习springMVC...
    99+
    2024-04-02
  • java获取请求ip的方法
      在上篇文章中我们介绍了 java获取请求 ip的方法,那么这篇文章我们就来详细讲解下获取请求 ip的方法。获取请求 ip的方法是基于 HTTP协议的,其原理如下: 1、用 web应用程序,将 web服务器端与客户端通过 HTTP协议通...
    99+
    2023-09-06
    java tcp/ip servlet
  • vue路由传参方式的方式总结及获取参数详解
    目录一、声明式传参1.params传参(显示参数)2.params传参(不显示参数)3.query 传参二、编程式传参1.params传参(显示参数)2.params传参(不显示参数...
    99+
    2024-04-02
  • Vue中$router.push()路由切换及如何传参和获取参数
    目录1、路由的两种常见方式2、传参和获取参数(query和params)总结 1、路由的两种常见方式 1)声明式: <router-link to="/login"...
    99+
    2023-05-13
    vue $router.push()路由切换 vue路由切换页面 vue 路由切换
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作