Gin 获取请求参数
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 获取请求参数的更多相关文章
- 学习SpringMVC——如何获取请求参数
@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView) ...
- springMvc源码学习之:spirngMVC获取请求参数的方法2
@RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView ...
- request对象常用API 获取请求参数的值 request应用 MVC设计模式
1 request对象常用API 1)表示web浏览器向web服务端的请求 2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1 ...
- struts2获取请求参数的三种方式及传递给JSP参数的方式
接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...
- 学习SpirngMVC之如何获取请求参数
学习SpringMVC——如何获取请求参数 @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@Cooki ...
- springMVC(spring)+WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
- Structs2 中拦截器获取请求参数
前言 环境:window 10,JDK 1.7,Tomcat 7 测试代码 package com.szxy.interceptor; import java.util.Map; import jav ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, ...
- spring(spring mvc)整合WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
- JavaScript获取请求参数
<script type="text/javascript"> //获取请求参数 function paramsMap() { var url = window.loc ...
随机推荐
- 可用性库存(CO09)排除库存地点增强
1.业务需求 1.1.业务背景 1.2.对应方案: 2.测试BAPI 首先运行事务代码CO09,查看结果 运行BAPI_MATERIAL_AVAILABILITY 3.增强实现 3.1.增强思路 3. ...
- 它来了!真正的 python 多线程
哈喽大家好,我是咸鱼 几天前,IBM 工程师 Martin Heinz 发文表示 python 3.12 版本回引入"Per-Interpreter GIL",有了这个 Per-I ...
- 在Windows上D盘上安装Docker
Reference https://www.willh.cn/articles/2022/07/13/1657676401964.html Docker默认安装在C盘: "C:\Progra ...
- 高数 | Dirichlet 积分
在分析学中,Dirichlet 积分 是如下形式的 无穷限积分 \[\int_{0}^{+\infty} \frac{\sin x}{x} \mathrm{~d} x \] 它是条件收敛的,且收敛到 ...
- L2-018 多项式A除以B (25 分) (math)
这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B.每行的 ...
- echarts自定义legend样式
https://blog.csdn.net/changyana/article/details/126281275
- 关闭 cockpit 登陆提示
sudo rm /etc/issue.d/cockpit.issue sudo rm /etc/motd.d/cockpit
- Angular系列教程之路由守卫
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- Angular系列教程之变更检测与性能优化
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- [转帖]TiDB修改配置参数
https://www.jianshu.com/p/2ecdb4642579 在TiDB 中,"修改配置参数"似乎是个不精准的说法,它实际包含了以下内容: 修改 TiDB 的系统变 ...