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. QE01/QA11/QA02屏幕增强

    1.业务需求 需要对来料检验增加"合格数量"和"不合格数量"字段,涉及三个增强开发 2.QE01\QE02\QE03\QE51N屏幕增强 增强表 增强点BADI ...

  2. IDEA整合SSM框架:简易图书操作模块

    这个SSM整合文章,以图书的增删改查为例 本篇文章源码已上传: Github:https://github.com/RivTian/University-coursework/tree/master/ ...

  3. SpringBoot 配置类解析

    本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/NvPO5-FWLiOlrsOf4wLaJA作者:Li Wanghong SpringBoot作为 ...

  4. 【D3 API 中文手册】

    https://blog.csdn.net/tianxuzhang/article/details/47067699?utm_medium=distribute.pc_relevant.none-ta ...

  5. paddlespeech on centos7

    概述 paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别.语音合成.说话人验证.关键词识别.音频分类和语音翻译等功能. paddles ...

  6. java项目实践-cookie-session-day18

    目录 1. cookie 2. session 3. servletcontext 4.servletConfig 1. cookie cookie 在客户端(浏览器)中保持http状态的 信息技术 ...

  7. python 基础 | 实现微秒级计时

    搬运一个计时代码: import datetime s = datetime.datetime.now() # 开始 # do something e = datetime.datetime.now( ...

  8. Guava缓存工具类封装和使用

    本文为博主原创,未经允许不得转载: Guava是谷歌提供的一款强大的java工具库,里面包含了很多方便且高效的工具,在项目开发中有业务场景需要保存数据到内存当中, 且只需要保存固定时间就可以,该数据只 ...

  9. SD-Host控制器设计架构

    SD Host功能列表 SD Host挂接在SoC中,与外部的SD card进行交互 有控制寄存器和状态寄存器,SoC往往有CPU,通过CPU进行配置寄存器,有些SoC没有CPU,需要使用I2C或者S ...

  10. 【Gerrit】操作技巧

    多笔提交依赖 1. cherry-pick 同步的多笔代码前后有依赖,如第M笔提交是基于第N笔修改的,直接同步过去会有冲突,所以同步M笔提交时需要基于N笔提交,即写入第N笔commit-id 上述填的 ...