gin基本使用

中文文档:https://gin-gonic.com/zh-cn/docs/

下载和安装gin模块

 go get -u github.com/gin-gonic/gin

简单接口demo

package main

import "github.com/gin-gonic/gin"

func main() {
   
	r := gin.Default()                    // 创建一个默认的路由引擎
	r.GET("/ping", func(c *gin.Context) {
    // 路由
		c.JSON(200, gin.H{
    // 返回json数据
			"message": "hello golang",
		})
	})
	r.Run() // 监听并在 0.0.0.0:8080 上启动服务
	//r.Run(":8081") // 自定义端口
}

浏览器访问:http://127.0.0.1:8080/ping

返回JSON格式数据

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
   
	r := gin.Default()

	// gin.H 是map[string]interface{}的缩写
	r.GET("/someJSON", func(c *gin.Context) {
   
		// 方式一:自己拼接JSON
		c.JSON(http.StatusOK, gin.H{
   "message": "Hello world!"})
	})
	r.GET("/moreJSON", func(c *gin.Context) {
   
		// 方法二:使用结构体
		var msg struct {
   
			Name    string `json:"user"`
			Message string
			Age     int
		}
		msg.Name = "小王子"
		msg.Message = "Hello world!"
		msg.Age = 18
		c.JSON(http.StatusOK, msg)
	})
	r.Run(":8080")
}

浏览器访问:http://localhost:8080/someJSON,http://localhost:8080/moreJSON

获取参数

推荐一篇博主写的文章,很全,获取请求参数和绑定参数示例都是全的

获取querystring类型参数

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
   
	r := gin.Default()

	r.GET("/user/search", func(c *gin.Context) {
   
		username := c.DefaultQuery("username", "小王子") // 没有username对应参数时默认小王子
		//username := c.Query("username")
		address := c.Query("address") // 获取address参数
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
   
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})

	r.Run(":8080")
}

浏览器访问:http://localhost:8080/user/search?username=萧寂&address=河南省

获取form表单参数

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
   
	r := gin.Default()

	r.POST("/user/search", func(c *gin.Context) {
   
		// DefaultPostForm取不到值时会返回指定的默认值
		//username := c.DefaultPostForm("username", "小王子")
		username := c.PostForm("username")
		address := c.PostForm("address")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
   
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})

	r.Run(":8080")
}

使用apiFox新建快捷请求,地址栏输入:http://localhost:8080/user/search,请求方式选择post,请求参数选择Body里面的form-data或者x-www-form-urlencoded,新增username字段,值为萧寂,address字段,值为河南省,点击发送请求即可

获取JSON参数

package main

import (
	"encoding/json"
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
   
	r := gin.Default()

	r.POST("/json", func(c *gin.Context) {
   
		// 注意:下面为了举例子方便,暂时忽略了错误处理
		b, _ := c.GetRawData() // 从c.Request.Body读取请求数据
		// 定义map或结构体
		var m map[string]interface{
   }
		// 反序列化
		_ = json.Unmarshal(b, &m)
		c.JSON(http.StatusOK, m)
	})

	r.Run(":8080")
}

使用apiFox新建快捷请求,地址栏输入:http://localhost:8080/json,请求方式选择post,请求参数选择Body里面的json或者xml或者raw,内容如下,然后点击发请求

{
   
    "username":"萧寂",
    "address":"河南省"
}

获取path参数

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
   
	r := gin.Default()

	r.GET("/user/search/:username/:address", func(c *gin.Context) {
   
		username := c.Param("username"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/879060.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

定位HardFault

一、HardFault定义 STM32出现HardFault_Handler硬件错误的原因主要有两个方面: 1、内存溢出或者访问越界。(包括使用野指针) 2、堆栈溢出。 二、定位HardFault步骤 1. 判断所使用堆栈: 发生异常之后可首先查看LR寄存器中的值…

SAP B1 单据页面自定义 - 用户界面编辑字段

背景 接《SAP B1 基础实操 - 用户定义字段 (UDF)》,在设置完自定义字段后,如下图,通过打开【用户定义字段】可打开表单右侧的自定义字段页。然而再开打一页附加页面操作繁复,若是客户常用的定义字段,也可以把这些用户…

pytest 接口测试

pytest 核心重点 读取excel(xfile --> read) 函数循环执行( pytest 装饰器,自动解析,一个个单独执行) 接口关联(Template 处理参数变量) pytest 是什么 .py文件名 用 test_开头,…

【计算机网络】HTTP相关问题与解答

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录 目录 一、HTTP请求和响应报文是怎样的? 1、请求报文 2、响应报文 二、HTTP请求方法有哪些? GET HEAD POST PUT DELETE PATCH OPTIONS TRACE CONNECT 三、GET请求与POST请…

linux cmake版本升级教程(Centos7)

有时候,当前系统的cmake版本,并一定能满足编译要求,所以需要进行升级到高于某个版本才能正常编译。本章教程,主要在centos7上进行升级cmake版本。 一、查看当前的cmake版本 cmake --version二、下载指定版本的cmake wget https://github.com/Kitware/CMake/releases/down…

Element UI:初步探索 Vue.js 的高效 UI 框架

Element UI:初步探索 Vue.js 的高效 UI 框架 一 . ElementUI 基本使用1.1 Element 介绍1.2 Element 快速入门1.3 基础布局1.4 容器布局1.5 表单组件1.6 表格组件1.6.1 基础表格1.6.2 带斑马纹表格1.6.3 带边框表格1.6.4 带状态的表格 1.7 导航栏组件讲解 二 . 学生列…

安装WINDOWS微软商店已下架的WSL系统,以UBUNTU 16.04 为例

下载WSL系统 方法1:POWERSHELL 用powershell下载 PowerShell Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1604 -OutFile Ubuntu.appx -UseBasicParsing 1 如果下载时间很长,可以这样把进度条关闭: $ProgressPreference Silentl…

计算机人工智能前沿进展-大语言模型方向-2024-09-12

计算机人工智能前沿进展-大语言模型方向-2024-09-12 1. PharmaBench: Enhancing ADMET benchmarks with large language models Z Niu, X Xiao, W Wu, Q Cai, Y Jiang, W Jin, M Wang… - Scientific Data, 2024 大语言模型在药物发现中的应用:PharmaBench 文章由…

vue 实现tab菜单切换

1、目标&#xff1a; 实现切换tab菜单&#xff0c;激活状态&#xff0c;按钮高亮&#xff0c;显示对应的菜单内容 2、实现 <template><div class"tan_menu"><ul class"container"><liclass"item"v-for"item in tab…

反编译classes.dex安卓源码 文件-android反编译技术

一、安卓源码 通过解压我们得到dex文件 将dex转换为jar&#xff0c;就可以直接查看源码 二、阿雪技术观 拥抱开源与共享&#xff0c;见证科技进步奇迹&#xff0c;畅享人类幸福时光&#xff01; 让我们积极投身于技术共享的浪潮中&#xff0c;不仅仅是作为受益者&#xff0c…

fiddler抓包03_汉化

Fiddler安装后为英文界面&#xff1a; 【汉化步骤】 ​① 下载汉化文件&#xff0c;链接: https://pan.baidu.com/s/1c13Dh--TwSCbwHykO8KAug?pwd8nvn 提取码: 8nvn ② 进入Fiddler目录&#xff0c;如我的安装在E:\test\Fiddler&#xff0c;将FiddlerTexts.txt复制到E:\tes…

【Linux】生产者消费者模型:基于阻塞队列,使用互斥锁和条件变量维护互斥与同步关系

目录 一、什么是生产者消费者模型 二、为什么要引入生产者消费者模型&#xff1f; 三、详解生产者消费者模型 ​编辑 生产者和生产者、消费者和消费者、生产者和消费者&#xff0c;它们之间为什么会存在互斥关系&#xff1f; 生产者和消费者之间为什么会存在同步关系&…

C++基础知识7 list

list 1. list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity1.2.4 list element access1.2.5 list modifiers1.2.6 list的迭代器失效 2.1 模拟实现list 1. list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 l…

基于扣子(Coze)打造第一个智能体——个性化对话机器人

文章目录 一&#xff0c;智能体体验二&#xff0c;动手打造一个自己的智能体1&#xff0c;主页点击创建机器人1.1 创建一个新的机器人1.2 修订Bot基础信息1.3 工具编排信息修订人设和回复逻辑、增补开场白等 2&#xff0c;使用插件优化机器人3&#xff0c;使用工作流优化机器人…

基于SpringBoot实现SpringMvc上传下载功能实现

目录 SpringMvc上传下载功能实现 1.创建新的项目 1&#xff09;项目信息填写 2&#xff09;选择所用的包 3&#xff09;创建controller包 4&#xff09;创建DownLoadController类 5&#xff09;创建UpLoadController类 6&#xff09;创建index.html 7&#xff09;创建upload.h…

dubbo三

dubbo dubbo架构各层说明 URL举例解析 消费者引用服务过程 项目初始化

nginx服务介绍

nginx 安装使用配置静态web服务器 Nginx是一个高性能的Web服务器和反向代理服务器&#xff0c;它最初是为了处理大量并发连接而设计的。Nginx还可以用作负载均衡器、邮件代理服务器和HTTP缓存。它以其轻量级、稳定性和高吞吐量而闻名&#xff0c;广泛用于大型网站和应用中 Ngin…

SpringCloud Feign 以及 一个标准的微服务的制作

一个标准的微服务制作 以一个咖啡小程序项目的订单模块为例&#xff0c;这个模块必将包括&#xff1a; 各种实体类&#xff08;pojo,dto,vo....&#xff09; 控制器 controller 服务类service ...... 其中控制器中有的接口需要提供给其他微服务&#xff0c;订单模块也需要…

55.【C语言】字符函数和字符串函数(strstr函数)

11.strstr函数 *简单使用 strstr: string string cplusplus的介绍 点我跳转 翻译: 函数 strstr const char * strstr ( const char * str1, const char * str2 ); 或另一个版本char * strstr ( char * str1, const char * str2 ); 寻找子字符串 返回指向第一次出现在字…

软件测试 | APP测试 —— Appium 的环境搭建及工具安装教程

大家应该都有同一种感觉&#xff0c;学习appium最大的难处之一在于环境的安装&#xff0c;安装流程比较繁琐&#xff0c;安装的工具和步骤也较多&#xff0c;以下是基于Windows系统下的Android手机端的安装流程。就像我们在用Selenium进行web自动化测试的时候一样&#xff0c;我…