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. Codeforces 189 A. Cut Ribbon(DP 恰装满的完全背包问题)

    题目链接 Polycarpus has a ribbon, its length is n. He wants to cut the ribbon in a way that fulfils the ...

  2. AISing Programming Contest 2021(AtCoder Beginner Contest 202) 简单题解记录

    补题链接:Here A - Three Dice 水题,问给定三次摇色子的正面,请问3次结果以后相对面的点数和 cout << (21 - a - b - c) << &quo ...

  3. Codeforces Round #713 (Div. 3) Person Editorial

    补题链接:Here 1512A - Spy Detected! 题意:找到唯一不同数的下标 复制数组然后比较 \(a_1\) int main() { ios_base::sync_with_stdi ...

  4. 深入剖析 RSA 密钥原理及实践

    一.前言 在经历了人生的很多至暗时刻后,你读到了这篇文章,你会后悔甚至愤怒:为什么你没有早点写出这篇文章?! 你的至暗时刻包括: 1.你所在的项目需要对接银行,对方需要你提供一个加密证书.你手上只有一 ...

  5. LocalDateTime、LocalDate、Date的相互转换

    1==LocalDateTime 转 LocalDate: 直接调用 toLocalDate() 方法: LocalDateTime localDateTime = LocalDateTime.now ...

  6. 为什么我要迁移SpringBoot到函数计算

    前言 为什么要迁移? 我们的业务有很多对外提供服务的 RESTful API,并且要执行很多不同的任务,例如同步连锁 ERP 中的商品信息到美团/饿了么等平台,在线开发票等.由于各种 API 和任务执 ...

  7. springboot 参数通过 @RequestBody传递的写法

    controller中有时候参数是使用 @RequestBody传递的这种怎么写? 直接上代码 @RequestMapping("/test") public void getAc ...

  8. Java面试——VUE2&VUE3概览

    一.VUE2.0 1.对于MVVM的理解 MVVM 是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑: View 代表U ...

  9. 简单的winform学生管理系统Demo

    界面效果 练习重点 1. 关系表的创建 2. 增删改查的操作,及sqlhelper的封装 3. 跨页面数据传递,编辑页数据提交后数据局步刷新到列表数据 项目源码 FrmStuddentList pub ...

  10. (已解决)pulse secure 连接功能变灰禁用 连接面板找不到

    今天打开 pulse secure 时,发现窗口变成了这样: 连接功能是灰色的,被禁用了: 解决方案: 运行 PulseSecureService 服务. 然后就正常了!