gin入门教程(4):路由与处理器

路由与处理器

在 Gin 框架中,路由和处理器是核心组成部分,负责将 HTTP 请求映射到相应的处理逻辑。

1. 定义路由

cmd/main.go 中,您可以定义不同的路由,例如:

r.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{
        "message": "pong",
    })
})

r.POST("/users", createUser)
2. 创建处理器函数

定义处理器函数以处理特定的请求:

func createUser(c *gin.Context) {
    var user User
    if err := c.ShouldBindJSON(&user); err == nil {
        // 假设这里有逻辑处理用户创建
        c.JSON(201, user)
    } else {
        c.JSON(400, gin.H{"error": err.Error()})
    }
}
3. 使用路由组

可以使用路由组来组织相关路由:

v1 := r.Group("/v1")
{
    v1.GET("/users", getUsers)
    v1.POST("/users", createUser)
}

完整代码:

package main

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

// User 定义用户结构体
type User struct {
    Name  string `json:"name"`
    Email string `json:"email"`
}

// createUser 处理用户创建
func createUser(c *gin.Context) {
    var user User
    if err := c.ShouldBindJSON(&user); err == nil {
        // 假设这里有逻辑处理用户创建
        c.JSON(201, user)
    } else {
        c.JSON(400, gin.H{"error": err.Error()})
    }
}

func main() {
    // 创建默认路由器
    r := gin.Default()

    // 设置根路由
    r.GET("/", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello, Gin!",
        })
    })

    r.GET("/ping",func (c *gin.Context)  {
        c.JSON(200,gin.H{
            "message":"pong",
        })
    })
    
    r.POST("/users",createUser)

    // 启动服务器
    r.Run(":8080") // 默认在 8080 端口
}


4. 启动服务器

确保调用 r.Run(":8080") 启动服务器。

5. 测试路由

使用 Postman 或 cURL 测试您的路由和处理器,确保返回正确的响应。

这样,您就能灵活地定义路由和处理请求逻辑,构建功能丰富的 API!

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

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

相关文章

部署seatunnel2.3.8

部署seatunnel web参考:SeaTunnel Web1.0.0安装_plugindiscoveryutil.getallconnectors-CSDN博客 配置:两台centos服务器,2master2worker 一、下载包 v2.3.8[bin] apache-seatunnel-2.3.8-bin.tar.gz 将包上传到master节点和worker节点所…

Python开发日记 -- 实现bin文件的签名

目录 1.数据的不同表现形式签名值不一样? 2.Binascii模块简介 3.问题定位 4.问题总结 1.数据的不同表现形式签名值不一样? Happy Muscle试运行了一段时间,组内同事再一次提出了新的需求:需要对bin文件签名。 PS:服…

使用代码编辑组件的npm包

使用代码编辑组件的npm包 文章说明核心代码运行截图源码下载 文章说明 我将书写的代码编辑组件打包为npm包,下载即可使用,目前是1.0.4版本,虽然功能还有一些bug,但是可以较为简单的使用 npm地址 核心代码 安装依赖 npm i bingbing…

H7-TOOL的LUA小程序教程第16期:脉冲测量,4路PWM,多路GPIO和波形打印(2024-10-25, 更新完毕)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…

OpenCV-物体跟踪

文章目录 一、物体跟踪的定义二、OpenCV中的物体跟踪算法三、OpenCV物体跟踪的实现步骤四、代码实现五、注意事项 OpenCV是一个开源的计算机视觉和机器学习软件库,它提供了丰富的功能来实现物体跟踪。以下是对OpenCV中物体跟踪的详细解释: 一、物体跟踪的…

清华大学《2022年+2021年822自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《清华大学822自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2022年真题 2021年真题 Part1:2022年2021年完整版真题 2022年真题 2021年真题…

论文笔记:通用世界模型WorldDreamer

整理了WorldDreamer: Towards General World Models for Video Generation via Predicting Masked Tokens 论文的阅读笔记 背景模型实验 背景 现有的世界模型仅限于游戏或驾驶等特定场景,限制了它们捕捉一般世界动态环境复杂性的能力。针对这一挑战,本文…

【若依笔记】-- 精简若依项目只保留系统管理

环境:最近项目需要计划使用若依来开发软件,使用若依有一个问题,若依代码框架还是比较冗余,不够精简,还有一点是若依Security权限校验,对于实现一对多的前台,比较麻烦,我这边的业务是…

大一物联网要不要转专业,转不了该怎么办?

有幸在2014年,踩中了物联网的风口,坏消息,牛马的我,一口汤都没喝上。 依稀记得,当时市场部老大,带我去上海参加电子展会,印象最深的,一些物联网云平台,靠着一份精美PPT&a…

【Python爬虫系列】_031.Scrapy_模拟登陆中间件

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…

接口测试(八)jmeter——参数化(CSV Data Set Config)

一、CSV Data Set Config 需求:批量注册5个用户,从CSV文件导入用户数据 1. 【线程组】–>【添加】–>【配置元件】–>【CSV Data Set Config】 2. 【CSV数据文件设置】设置如下 3. 设置线程数为5 4. 运行后查看响应结果

Linux 进程概念

目录 冯诺依曼体系结构(了解) 周边知识 操作系统 如何管理 解释打印 ★库函数 ★系统调用 进程 概念 PCB 结构示意图 系统调用 监控脚本 gitpid / gitppid 解释样例 chdir /proc 解释样例 运行起来后删除磁盘中小体积的可执行程序 …

RHCSA第二次作业

4、将整个 /etc 目录下的文件全部打包并用 gzip 压缩成/back/etcback.tar.gz 5、使当前用户永久生效的命令别名:写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello,everyone写入文件/file.txt中。 6、创建mygroup组群&#xff…

IDEA关联Tomcat——最新版本IDEA 2024

1.链接Tomcat到IDEA上 添加Tomcat到IDEA上有两种方式: 第一种: (1)首先,来到欢迎界面,找到左侧的Customize选项 (2)然后找到Build、Execution、Deployment选项 (3&am…

ruoyi域名跳转缓存冲突问题(解决办法修改:session名修改session的JSESSIONID名称)

【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】【创作不易,点个赞就是对我最大的支持】 前言 仅作为学习笔记,供大家参考 总结的不错的话,记得点赞收藏关注哦! 目录 前…

Java 输入与输出(I/O)之字节流、字符流与转换流

Java 输入/输出流(Input/Output,简称I/O)是Java语言用于读写数据的API,它提供了一系列类和接口,用于读取和写入各种类型的数据信息。 I/O流按数据单元(粒度大小)可分为字节流(以字节…

什么样的JSON编辑器才好用

简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。随着互联网和应用程序的快速发展,JSON已经成为数据传输和存储的主要格式之一。在处理和编辑JSON数据…

太速科技-212-RCP-601 CPCI刀片计算机

RCP-601 CPCI刀片计算机 一、产品简介 RCP-601是一款基于Intel i7双核四线程的高性能CPCI刀片式计算机,同时,将CPCI产品的欧卡结构及其可靠性、可维护性、可管理性与计算机的抗振动、抗冲击、抗宽温环境急剧变化等恶劣环境特性进行融合。产品特别…

unity开发之可视化制作动画

录制动画 1)打开录制动画页面(或者按快捷键ctrl6) 2)选中需要录制动画的对象 3)创建动画列表,注意现在还没有录制动画,我这里创建了开门和关门动画列表 4)选择需要录制动画的对象的相…

python爬虫实战案例——抓取B站视频,不同清晰度抓取,实现音视频合并,超详细!(内含完整代码)

文章目录 1、任务目标2、网页分析3、代码编写 1、任务目标 目标网站:B站视频(https://www.bilibili.com/video/BV1se41117WP/?vd_sourcee8e376ccbc5aa4cfd88e6a7917adfd1a),用于本文测验 要求:抓取该网址下的视频&…