1、获取URL?后的参数(不区分请求方式)

// 获取请求url ? 后的参数(url:8080/add?name=kelvin)
func GetUrlParam(ctx *gin.Context) {
name := ctx.Query("name")
defaultName := ctx.DefaultQuery("name", "defaultName...")
ctx.JSON(http.StatusOK, gin.H{
"name": name,
"defaultName": defaultName,
})
}

2、获取form参数(post方式)

// 获取请求表单的参数
func GetFormParam(ctx *gin.Context) {
formName := ctx.PostForm("name")
defaultPostFormName := ctx.DefaultPostForm("name", "default name form ~~~")
ctx.JSON(http.StatusOK, gin.H{
"formName": formName,
"defaultPostFormName": defaultPostFormName,
})
}

3、获取json参数

// 获取请求Json参数体
func GetJson(ctx *gin.Context) {
data, err := ctx.GetRawData()
if err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{
"msg": "获取json数据异常",
})
}
var m map[string]interface{}
// 反序列化
_ = json.Unmarshal(data, &m)
ctx.JSON(http.StatusOK, gin.H{
"json": &m,
})
}

4、获取路径参数

// 获取请求url中的路径参数(url:8080/add/:name/:age)
func GetUrlPathParam(ctx *gin.Context) {
name := ctx.Param("name")
age := ctx.Param("age")
ctx.JSON(http.StatusOK, gin.H{
"name": name,
"age": age,
})
}

5、获取url指定位置后的路径

// 获取请求url中的路径(url:8080/add/*path,url:8080/add/student/ok,path取出即是/student/ok)
func GetUrlLike(ctx *gin.Context) {
path := ctx.Param("path")
ctx.JSON(http.StatusOK, gin.H{
"path": path,
})
}

6、struct绑定请求参数

// 将请求参数直接复制给struct对象的属性
type User struct {
Name string `form:"name"`
Age int64 `form:"age"`
} func BindParamToStruct(ctx *gin.Context) {
var user User
// 将请求参数直接赋值给user对象
err := ctx.BindQuery(&user)
// 和上个方法一致,只是如果user规定某个字段必传时,上个方法调用时接口响应码为400,本方法可以自行处理异常,正常返回数据
//err := ctx.ShouldBindQuery(&user)
if err != nil {
log.Println(err)
}
ctx.JSON(http.StatusOK, gin.H{
"user": user,
})
}

7、获取前端url参数数组形式

// url:8080/set?hobby=foot&hobby=apple
func GetUrlArray(ctx *gin.Context) {
// 获取参数名是“hobby”的参数,结果为数组
array := ctx.QueryArray("hobby")
// 同上方法,只不过会有是否获取成功的返回值
//queryArray, ok := ctx.GetQueryArray("hobby")
ctx.JSON(http.StatusOK, gin.H{
"array": array,
})
}

注意:也可以使用struct绑定形式接受数组,需要在struct中定义数组类型的属性并将该属性的tag名改为请求参数名

8、获取文件数据

// 获取form表单数据及文件
func FileUpload(ctx *gin.Context) {
form, err := ctx.MultipartForm()
if err != nil {
log.Println(err)
}
value := form.Value
filesMap := form.File
log.Println(filesMap)
for _, fileArray := range filesMap {
log.Println(fileArray)
for _, file := range fileArray {
ctx.SaveUploadedFile(file, "./files/"+file.Filename)
}
}
ctx.JSON(http.StatusOK, gin.H{
"value": value,
})
}

未完待续~~~

Gin 获取请求参数的更多相关文章

  1. 学习SpringMVC——如何获取请求参数

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...

  2. springMvc源码学习之:spirngMVC获取请求参数的方法2

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView ...

  3. request对象常用API 获取请求参数的值 request应用 MVC设计模式

    1 request对象常用API   1)表示web浏览器向web服务端的请求   2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1     ...

  4. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...

  5. 学习SpirngMVC之如何获取请求参数

    学习SpringMVC——如何获取请求参数   @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...

  6. springMVC(spring)+WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  7. Structs2 中拦截器获取请求参数

    前言 环境:window 10,JDK 1.7,Tomcat 7 测试代码 package com.szxy.interceptor; import java.util.Map; import jav ...

  8. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段

      ServletRequest 基本概念 JavaWeb中的 "Request"对象  实际为   HttpServletRequest  或者  ServletRequest, ...

  9. spring(spring mvc)整合WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  10. JavaScript获取请求参数

    <script type="text/javascript"> //获取请求参数 function paramsMap() { var url = window.loc ...

随机推荐

  1. 【辅助工具】SVN使用

    1.在对应路径下右键SVN checkout 2.输入对应的网址.用户名.密码 3.提交右键选择SVN commit.覆盖选择SVN update 4.编辑的时候右键TortoiseSVN-get l ...

  2. Codeforces Round #663 (Div. 2) (A~C题,C题 Good)

    比赛链接:Here 1391A. Suborrays 简单构造题, 把 \(n\) 放最前面,接着补 \(1\) ~ \(n - 1\) 即可 1391B. Fix You \((1,1)\) -&g ...

  3. 【每日一题】35. [CQOI2009]中位数图 (前缀和,贡献值计算)

    补题链接:Here 算法涉及:前缀和,贡献值计算 经典中位数计数问题,记得以前百度之星也出过类似的题,这道题有一个限定范围是要奇数区间的 我们很容易想到,奇数下标到偶数下标或者偶数下标到奇数下标的长度 ...

  4. 使用Python实现基本的学生管理系统

    本篇文章主要分享python学生管理系统的使用,文章非常详细地介绍了通过示例代码实现的学生管理系统,该系统对每个人的研究或工作都有一定的参考学习价值,希望你能在其中有所收获. 这个是用python实现 ...

  5. AtCoder Beginner Contest 179 个人题解(C欧拉筛,D前缀和,E循环节,F线段树)

    补题链接:Here A - Plural Form 字符串,末尾有 s 的加es,不然加 s . B - Go to Jail 输入的时候判断一下是否连续相等即可 C - A x B + C (mat ...

  6. CompletableFuture 使用详解

    CompletableFuture 使用详解 1. runAsync 和 supplyAsync方法 CompletableFuture 提供了四个静态方法来创建一个异步操作. public stat ...

  7. STM32CubeMX教程18 DAC - DMA输出自定义波形

    1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm ...

  8. uni-app打包h5页面ios唤起软键盘踩坑

    问题:页面有很多input框,上面的input输入框,当虚拟键盘出来时没问题,但是下面的input输入框,就会出现问题,input输入框会跑到键盘后面. 网上一阵百度,找到原因:安卓手机中唤起软键盘时 ...

  9. el-table 暂无数据自定义

  10. CoinBase是什么?

    什么是CoinBase交易? 比特币区块链上的每个区块中都会包含一个或者多个交易(transaction),其中第一个交易就叫做CoinBase交易. 什么是CoinBase交易? CoinBase交 ...