gin框架中HTTP请求和参数的解析
1. 方法一: 通用的处理方法---Handle
package main import (
"fmt"
"github.com/gin-gonic/gin"
"log"
) func main() {
router := gin.Default() router.Handle("GET","/hello", func(ctx *gin.Context) {
fmt.Println(ctx.FullPath())
//name := ctx.Query("name")
name := ctx.DefaultQuery("name", "默认值")
fmt.Println("name =", name)
ctx.Writer.Write([]byte("hello " + name))
}) // post: /login?name=zhangsna&pwd=123456
router.Handle("POST", "/login", func(ctx *gin.Context) {
// 接收前端传递的json数据
/* 方法一
json := make(map[string]interface{})
ctx.BindJSON(&json)
fmt.Println(json)
*/ // 方法二
var userLogin UserLogin
ctx.Bind(&userLogin)
fmt.Println(userLogin) fmt.Println(ctx.FullPath())
name := ctx.DefaultPostForm("name", "张三")
pwd := ctx.DefaultPostForm("pwd", "789789")
ctx.Writer.Write([]byte(name + ":" + pwd))
}) if err := router.Run(":8000"); err != nil {
log.Fatalln(err.Error())
}
} type UserLogin struct {
Name string `json:"name"`
Password string `json:"pwd"`
}
2. 分类处理
package main import (
"fmt"
"github.com/gin-gonic/gin"
) func Hello(ctx *gin.Context) {
// GET请求
fmt.Println(ctx.FullPath(), ctx.ClientIP())
fmt.Println(ctx.Query("name"))
ctx.Writer.Write([]byte("hello " + ctx.Query("name")))
}
type Login struct {
Name string `json:"name"`
Password string `json:"pwd"`
}
func UserLogin(ctx *gin.Context) {
// POST请求
fmt.Println(ctx.FullPath(), ctx.ClientIP())
var login Login
ctx.BindJSON(&login)
fmt.Println(login)
ctx.Writer.Write([]byte(login.Name + ":" + login.Password))
}
func UserDelete(ctx *gin.Context) {
id := ctx.Param("id")
fmt.Println("Param_id:", id)
ctx.Writer.Write([]byte("delete user id:" + id))
} func main() {
router := gin.Default() router.GET("/hello", Hello)
router.POST("/login", UserLogin)
router.DELETE("/user/:id", UserDelete) router.Run(":8000")
}
gin框架中HTTP请求和参数的解析的更多相关文章
- gin框架中的参数验证
结构体验证 用gin框架的数据验证,可以不用解析数据,减少if else,会简洁许多. 处理请求方法 func structValidator(context *gin.Context) { var ...
- gin框架中请求路由组的使用
1. gin框架中可以使用路由组来实现对路由的分类 package main import "github.com/gin-gonic/gin" func main() { rou ...
- Gin框架04:趣谈参数绑定与校验
导读 在第二节,我们学习了Gin框架的路由定义与参数接收,今天应一位同学的要求,来讲解一下参数的绑定与校验. 为什么校验参数? 本不必抛出这个问题的,但顾及到初出茅庐的同学,这里解释一下. 假设做一个 ...
- 在gin框架中使用JWT
在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. 什么 ...
- gin框架中的路由
基本路由 gin框架中采用的路由库是基于httrouter做的 地址为:https://github.com/julienschmidt/httprouter httprouter路由库 点击查看代码 ...
- golang gin框架中实现一个简单的不是特别精确的秒级限流器
起因 看了两篇关于golang中限流器的帖子: Gin 开发实践:如何实现限流中间件 常用限流策略--漏桶与令牌桶介绍 我照着用,居然没效果-- 时间有限没有深究.这实在是一个很简单的功能,我的需求是 ...
- laravel框架中Job和事件event的解析
本篇文章给大家带来的内容是关于laravel框架中Job和事件event的解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做项目的时候,一直对Job和Event有个疑惑.感觉两 ...
- gin框架中请求参数的绑定与多数据格式处理
package main import ( "fmt" "github.com/gin-gonic/gin" ) // gin框架提供给开发者表单实体绑定的功能 ...
- Gin框架中文文档
Gin 是一个 go 写的 web 框架,具有高性能的优点.官方地址:https://github.com/gin-gonic/gin 带目录请移步 http://xf.shuangdeyu.com/ ...
随机推荐
- c++之Linux获取可用串口
1.关于 这份代码来自: stackoverflow 2. 测试 2.1 测试环境: vmware + ubuntu, vmware添加串口(虚拟机关机后再添加) 2.2 测试输出 3. 源码 #in ...
- 1686 第K大区间
1686 第K大区间 时间限制:1 秒 空间限制:131072 KB 定义一个区间的值为其众数出现的次数.现给出n个数,求将所有区间的值排序后,第K大的值为多少. 众数(统计学/数学名词)_百度百 ...
- 第六个知识点:我们怎么把NP问题解释成一组可以在多项式内证明的命题
第六个知识点:我们怎么把NP问题解释成一组可以在多项式内证明的命题 原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6- ...
- 深入理解Java虚拟机一:运行时数据区域
根据<Java虚拟机规范(第2版)>的规定,Java虚拟机管理的内存包括下图几个运行时数据区域: 1.程序计数器 程序计数器(Program Counter Register ...
- A New Defense Against Adversarial Images: Turning a Weakness into a Strength
目录 概 主要内容 准则1 准则2 总策略 Hu S, Yu T, Guo C, et al. A New Defense Against Adversarial Images: Turning a ...
- Adversarially Robust Generalization Requires More Data
目录 概 主要内容 高斯模型 upper bound lower bound 伯努利模型 upper bound lower bound Schmidt L, Santurkar S, Tsipras ...
- CS5211替代CH7511B|设计DP转LVDS转接板|替代CH7511B
CH7511B是一款DP转lvds屏转换芯片CH7511B是一款eDP转LVDS转换芯片.CH7511B将嵌入式DisplayPort信号转换为LVDS(低压差分信号).通过CH7511B的高级解码/ ...
- 云南农职《JavaScript交互式网页设计》 综合机试试卷①——实现购物车的结算
一.语言和环境 实现语言:javascript.html.css. 开发环境:HBuilder. 二.题目2(100分) 1.功能需求: 马上过节了,电商网站要进行促销活动,需要实现该商城购物车的商品 ...
- 编写Java程序,使用Swing布局管理器和常用控件,实现仿QQ登录界面
返回本章节 返回作业目录 需求说明: 使用Swing布局管理器和常用控件,实现仿QQ登录界面 实现思路: 创建登录界面的类QQLogin,该类继承父类JFrame,在该类中创建无参数的构造方法,在构造 ...
- Docker 部署 ElasticSearch-Head 及其他插件
拉取ElasticSearch-Head镜像 docker pull mobz/elasticsearch-head:5 运行ElasticSearch-Head容器 docker run -d -- ...