Gin(九):生成 restful 接口

golang工程组件篇:高性能web框架gin之RESTful API与API版本控制 综上所述,RESTful API和API版本控制是golang工程组件中非常重要的两个组件。通过使用gin框架可以轻松地实现RESTful API,并且通过API版本控制可以有效地管理不同版本的API接口。为了解决这个问题,我们可以使用API版本控制来管理不同版本的API接口。通过向URI中添加版本号或者使用HTTP请求头等方式来标识当前使用的API版本,从而确保客户端能够正确地访问对应版本的接口。三、什么是API版本控制? 阅读详情

点击蓝色字关注我们!

一个努力中的公众号

长的好看的人都关注了

640?

经过前面几章节的学习,基本对 Gin 中的一些概念和函数有所了解和掌握,也知道如何在代码中对其进行使用,那么接下来,我们将目光回到很久很久以前,具体多久呢?估摸着就是你在学习第二章 Gin 路由 的时候。

今天,不在模板上做文章了,而是要开启新的章节,我们叫它 restful。


640

?restful 是什么

640


说到 restful 相信很多乃至大量的朋友们都不陌生,如果你已经知道那就直接看下一个章节,但还是有很多小伙伴是第一次接触,那么这里就简单介绍一下restful。

简单的说 restful 就是一种 接口定义风格,比如说之前我们的接口对于更新用户可能这样定义, /update_user 对于获取当前用户可能是 get_user ,删除当前用户为 /delete_user ,而现在使用 restful 风格的接口,那么我们对于更新用户的接口定义为 /user,获取用户定义为  /user ,删除用户为 /user 。

???..............................???

第一次接触的朋友肯定是满脸问号,所以我访问一下 /user 数据是更新了?删除了?还是获取一个用户?所以说一个完整的 restful 风格的接口并不是只是 url  的定义,还有请求方式。

还记得第二章中对于 gin 提供的 http 请求方式的说明吗?所以一个完整的 restful 请求需要加上请求方式。对于更新用户我们的接口应该是用 update 请求 `/user ,对于获取用户应该用 get 请求方式 /user ,对于删除用户应该用 delete 请求 /user 接口。

这里只对 restful 请求方式做最简单的介绍。


640

?第一个接口

640


我们现在来进行一个关于文章接口的展示,仍旧是连接上数据库,数据存在数据库中。

首先建立数据库,仍旧是在我们之前使用的数据库上建立新的表 article ,下面为建表语句,并且连接数据库。

 create table ` article` (     id int auto_increment         primary key,     type varchar(20) null,     content text not null );

首先我们要有一个模型来和表结构对应,也用于我们接收前端的数据绑定。

新建 model 文件夹,在 model 文件夹中建立 article.go


 

 type Article struct {     Id      int    `json:"id"`     Type    string `json:"type"`     Content string `json:"content"` }

通过标注 json 来进行对前端数据获取是的绑定。

接下来就可以完成第一个功能了,向数据库新增一个 article 。在 article.go 中完成向数据添加数据的代码,这里代码不做解释,和之前一致。


 

 func (article Article) Insert() int {     result, e := initDB.Db.Exec("insert into ` article` (type, content) values (?, ?);", article.Type, article.Content)     if e != nil {         log.Panicln("文章添加失败", e.Error()) }     i, _ := result.LastInsertId()     return int(i) }

完成 model 层,就可以完成 handler

在 handler 下新建  article/articleHandler.go 。

我们首要要获取前端穿过来的数据。通过 context.ShouldBindJSON 来对数据进行绑定。如果绑定成功,则调用我们上面写的增加方法进行添加。当完成后,通过 context.JSON 返回 json 数据。


 

 func Insert(context *gin.Context) {     article := model.Article{}     var id = -1     if e := context.ShouldBindJSON(&article); e == nil {         id = article.Insert()     }     context.JSON(http.StatusOK, gin.H{         "id": id,     }) }

最后,我们完成对应的路由。

在 initRouter 中的 SetupRouter 中完善路由配置。


 

 articleRouter := router.Group("") {         // 添加一篇文章         articleRouter.POST("/article", article.Insert)
}

640

⭕测试

640


当这一切完成后就是运行测试了。

当然我们最好编写单元测试。

在 test 文件夹中,新建 article_test.go 测试文件。

package test  import (     "GinHello/initRouter"     "GinHello/model"     "bytes"     "encoding/json"     "github.com/gin-gonic/gin"     "gopkg.in/go-playground/assert.v1"     "net/http"     "net/http/httptest"     "testing" )  var router *gin.Engine  func init() {     router = initRouter.SetupRouter() }  func TestInsertArticle(t *testing.T) {     article := model.Article{         Type:    "go",         Content: "hello gin", }     marshal, _ := json.Marshal(article)     w := httptest.NewRecorder()     req := httptest.NewRequest(http.MethodPost, "/article", bytes.NewBufferString(string(marshal)))     req.Header.Add("content-typ", "application/json")     router.ServeHTTP(w, req)     assert.Equal(t, w.Code, http.StatusOK)     assert.NotEqual(t, "{id:-1}", w.Body.String()) }

在测试用例里创建一个 article 对象,并且赋值,通过 json 方法建对象转换为 json,最后发起请求。

运行测试用例,如果我们的代码写的 没有问题的话,测试通过,并且数据库中会对应添加该数据。

当然你不想写单元测试也是可以的,可以通过 Postman 等来进行测试,这里给大家简单的介绍一下 GoLandHttp  测试工具。

我们新建立一个 http_test 文件夹,在文件夹下面新建一个 .http 文件,命名为 article.http

640?wx_fmt=jpeg

对文件进行编写,编写如下,指定我们的请求地址,指定要求的数据。在POST 左侧就会出现一个 运行按钮,点击运行按钮,控制台会出现返回结果。运行该文件时,要将我们的项目启动起来。


 

 POST http://localhost:8080/article Content-Type: application/json  {   "type": "go",   "content": "Hello Go" }

其他的 .http 文件的语法规则 请看官方文档。

这样就完成了第一个 restful 接口,同样可以完成其他的接口。其他的接口示例请看 Github 上代码。


640

✍总结

640


本章节主要讲述了如何构建一套 restful 接口,restful 接口对于现在的开发是越来越重要了,大量的接口都是 restful 风格。Github 上代码完成了查询,添加,删除等接口,篇幅有限,不展开多讲了。


640

?‍?本章节示例代码

640


Github 代码请点击 阅读原文

往期推荐

Gin(一):Hello Gin

Gin(二):路由Router

Gin(三):配合模板 Tmpl

Gin(四):表单数据提交和模型绑定

Gin(五):连接MySQL

Gin(六):文件的上传

Gin(七):中间件的使用和定义

Gin(八): Cookie 的使用

640?wx_fmt=jpeg


好看的人才能点

640



1.golang : gorm + gin实现restful 接口 golang : gorm + gin实现restful 接口 gorm操作数据库 golang可以使用gorm工具对数据库进行操作,实现对数据的一系列操作. gorm的中文文档如下: https://jasperxu.github.io/gorm-zh/ 主要实现的功能如下: 全功能ORM(几乎) 关联(包含一个,包含多个,属于,多对多,多种包含) Callbacks(创建/... 阅读详情

相关推荐

Gin框架整合Swagger生成接口文档完整指南

摘要:本文介绍了在Gin框架中集成Swagger自动生成API文档的方法。Swagger通过代码注解实现"代码即文档",解决了传统手写文档更新不同步、调试不便等问题。内容包括:1) Swagger安装配置;2) 项目结构与基础注解配置;3) 数据模型和API接口的详细注解编写规范,涵盖GET、POST、PUT、DELETE等多种请求类型,提供参数校验、响应格式等标准定义。通过集成Swagger,开发者可以自动生成实时准确的API文档,提升开发效率和协作质量。

才这么点的博客 1153

Gin之Restful风格的API

Restful风格的API

weixin_52690231的博客 1086

NPU、CPU和GPU

NPU、CPU和GPU是三种不同类型的处理器,它们各自有不同的设计特点和应用场景。NPU(Neural Processing Unit,神经网络处理单元)是一种专门为加速神经网络计算而设计的处理器。

m0_60697583的博客 1755

Gin框架 RESTful API & 参数获取

一、RESTful API是什么 REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”,通俗一点的话就是RESTful是一种风格,通过四个HTTP动词GET,POST,PUT,DELETE对服务器资源进行操作,用传统API和RESTful API做个对比图: 传统请求方式 传统URL RESTful 请求方式 RESTful URL 描述说明 GET /user GET /user 查询用户信息 POST /cre

weixin_44054396的博客 1499

从原理到代码:一文搞懂LFM信号脉冲压缩在Matlab中的实现

本文深入解析了LFM信号脉冲压缩的核心原理与Matlab实现方法。从线性调频信号的数学表达、时频特性入手,详细讲解了如何构建多目标回波仿真环境,并重点阐述了匹配滤波器的频域实现算法。文章提供了完整的、可运行的Matlab代码,涵盖信号生成、噪声添加、脉冲压缩及性能评估等关键步骤,并探讨了加窗处理、参数选择等工程实践中的考量,为雷达信号处理的学习与实践提供了清晰指南。

weixin_29063035的博客 415

江科大51单片机笔记【1】单片机及开发板介绍

单片机,Micro Controller Unit,简称MCU,内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(传感器)、处理(CPU)和硬件设备(电机、LED)的控制单片机算是一个袖珍版计算机,是一个完整的计算机系统,成本低体积小结构简单单片机的使用领域:智能仪表、实时工控、通讯设备、导航系统、家用电器等。

2301_80195807的博客 839

G0第21章 :gin框架介绍、RESTful API、Gin渲染

Go世界里最流行的Web框架,Github。上有32K+star。基于httprouter开发的Web框架。中文文档齐全,简单易用的轻量级框架。r := gin . Default() //返回默认的路由引擎 //指定用户使用GET请求访问/hello时,执行sayHello这个函数 r . GET("/hello" , func(c * gin . Context) {" , }) }) //启动服务 r . Run(":9090") }以下内容为网页中需要显示的界面

tianyi520jx的博客 1829

Teams会议翻译对比测试:Copilot同传 vs 人工翻译,结果出乎意料

本文通过对比测试Microsoft 365 Copilot的实时翻译与专业人工翻译在Teams会议中的表现,揭示了AI同传技术在准确率、响应速度和多语言切换方面的优势与局限。实验数据显示,Copilot在常规商务场景下接近人工翻译水平,且成本效益显著,但在专业术语和文化特定表达上仍需人工辅助。

weixin_29054195的博客 224

【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

全称:“万维网”(World Wide Web)本质:系统(基于互联网).由一系列的超文本文档Hypertext Documents)组成作用:用户可以通过浏览器/APP,在Web上访问各种网站、资源原理(重要):Web的核心技术:超文本标记语言(HTML等):用于组织和创建Web页面超文本传输协议(HTTP):Web客户端和服务器之间传输数据的协议网页浏览器(Web Browser):用于显示Web页面的软件统一资源定位符(URL):表示Web资源的地址发展历程。

Yaoyao2024的博客 2515

模拟CMOS 第2章 MOS器件物理基础

模拟CMOS 第2章 MOS器件物理基础 文章目录模拟CMOS 第2章 MOS器件物理基础2.1 基本概念2.1.1 MOSEFT开关2.1.2 MOSEFT结构2.1.3 MOS符号2.2 MOS的I/V特性2.2.1 阈值电压2.2.2 I/V特性的推导2.3 二级效应2.4 MOS器件模型2.4.1 MOS器件版图2.4.2 MOS器件电容2.4.3 MOS小信号模型2.4.4 MOS SPICE模型2.4.5 NMOS与PMOS器件的比较2.4.6 长沟道器件与短沟道器件的比较附录A 用作电容器MO

椰子奶糖的博客 5206

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4378

Gin(九):生成restful接口

经过前面几章节的学习,基本对 Gin 中的一些概念和函数有所了解和掌握,也知道如何在代码中对其进行使用,那么接下来,我们将目光回到很久很久以前,具体多久呢?估摸着就是你在学习第二章 Gin 路由 的时候。 今天,不在模板上做文章了,而是要开启新的章节,我们叫它 restful。

代码猎奇站 1980

ArcGIS Pro 3.0 加载天地图WMTS服务,解决偏移问题的保姆级教程(附最新Key申请流程)

本文详细介绍了在ArcGIS Pro 3.0中精准加载天地图WMTS服务的全流程,包括最新Key申请流程、解决地图偏移问题的关键配置步骤以及常见问题排查方法。通过设置`esri`参数和统一坐标参考,确保地理数据与天地图底图精确匹配,提升GIS空间分析的准确性。

weixin_28713947的博客 309

ajax delete gin 获取不到_Gin(九):生成restful 接口,go语言最火web框架之一

经过前面几章节的学习,基本对 Gin 中的一些概念和函数有所了解和掌握,也知道如何在代码中对其进行使用,那么接下来,我们将目光回到很久很久以前,具体多久呢?估摸着就是你在学习第二章 Gin 路由 的时候。今天,不在模板上做文章了,而是要开启新的章节,我们叫它 restful。restful 是什么说到 restful 相信很多乃至大量的朋友们都不陌生,如果你已经知道那就直接看下一个章节,但还是有很...

weixin_36054159的博客 168

2026.4.15:超详细自动安装Ubuntu-Server的保姆级教程

这篇教程详细介绍了如何创建无人值守的Ubuntu Server 26.04自动安装镜像。主要内容包括:从安装镜像中提取autoinstall-user-data文件并修改为user-data配置文件;使用mkpasswd生成加密密码;通过软碟通工具修改ISO镜像,添加自动安装所需的user-data和meta-data文件;编辑grub.cfg引导文件以启用自动安装模式。教程提供了完整的yaml配置示例,包含网络、存储、用户等设置,并演示了最终制作完成的自动安装镜像效果。

拥抱具身智能,昇腾Ascend C 750

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

gin+gorm 构建restful API接口

转载自:https://learnku.com/articles/23548/gingormrouter-quickly-build-crud-restful-api-interface 下载扩展 go get github.com/go-sql-driver/mysql go get github.com/jinzhu/gorm go get github.com...

LONINGWORLD的博客 3284

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Golang gin框架使用swagger生成接囗文档

0、开发环境 操作系统:Win10 Golang版本:1.15 1、安装swag go get github.com/swaggo/swag/cmd/swag 此时会在环境变量 GOBIN目录中生成swag.exe,如下图所示 验证是否安装成功 F:\Golang\TalentChain\talentchain>swag -v swag version v1.8.1 2、安装依赖包 go get -u github.com/swaggo/gin-swagger go ge.

ling1998的博客 6948

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Gin实战:Gin+Mysql简单的Restful风格的API

  我们已经了解了Golang的Gin框架。对于Webservice服务,restful风格几乎一统天下。Gin也天然的支持restful。下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全。我们先以一个单文件开始,然后再逐步分解模块成包,组织代码。 It works 使用Gin的前提是安装,我们需要安装gin和mysql的驱动,具体的安装方式就不在赘述。可以参考Golang 微框架Gin...

秋天的博客 3439

使用Gin开发Restful接口

摘要 本文详细介绍了使用Gin框架实现RESTful API规范的方法,重点阐述了RESTful的核心概念:资源定义与HTTP动词(GET/PUT/POST/DELETE)的规范使用,以及HTTP状态码的正确应用。文章提供了Gin路由配置示例和完整的Customer控制器实现代码,并推荐使用httpexpect库进行自动化API测试以确保接口可靠性。通过遵循RESTful规范,开发者可以建立更统一、直观的API接口,无需记忆繁琐的方法名,同时便于封装通用操作方法。(150字)

少湖说 727

Gin框架实战:Ginblog后端API设计与实现,10分钟掌握RESTful接口开发

Ginblog是一个基于Gin+Vue+MySQL技术栈构建的全栈博客项目,通过它可以快速学习RESTful API设计与实现。本文将带你在10分钟内掌握使用Gin框架开发后端API的核心方法,从项目结构到接口设计,轻松入门Go语言Web开发。 [![Golang全栈项目](https://raw.gitcode.com/gh_mirrors/gi/Ginblog/raw/2cb3038682f

gitblog_00748的博客 1044

AI助力Go Gin开发:自动生成RESTful API代码

特别是自动生成符合最佳实践的代码结构,让项目从开始就保持良好规范。如果你也在开发类似的后端服务,不妨试试这个工具,相信会有不错的体验。最近在开发一个用户管理系统的后端API,需要用到Go的Gin框架。这个项目功能比较全面,包括用户注册登录、信息管理、分页查询和文件上传等。完成代码编写后,直接点击部署按钮就能把API服务上线,完全不需要手动配置服务器环境。这些难点通过AI提供的示例代码和优化建议都得到了很好的解决。统一的错误处理机制,返回规范的JSON响应。的AI辅助功能,发现效率提升了很多。

NightshadeRaven21的博客 938

gin+swagger+restful环境搭建

gin的使用 可以参考官网安装gin https://github.com/gin-gonic/gin 使用go mod,若遇到golang.org包无法下载的问题请参考:https://blog.youkuaiyun.com/wz122330/article/details/89493467 使用go mod管理项目依赖包 go mod init生成go.mod文件 [wangzheng@wangzheng...

wz122330的博客 6102

【RESTful API 文档】为 Gin 开发项目加上 Swag 和 gin-swagger 自动生成 RESTful API 接口文档

为 Gin 开发项目加上 Swag 和 gin-swagger 自动生成 RESTful API 接口文档。 并解决了【‘swag’ 不是内部或外部命令,也不是可运行的程序或批处理文件】 问题

这里主要记录一些学到的新知识 511

Gin Web接口文档自动生成:Swagger配置与使用教程

### 文档的展开方式 在注册Swagger路由时,可以通过`ginSwagger.DocExpansion("none")`设置文档的展开方式,"none"表示默认不展开接口详情,"list"表示展开接口列表,"full"表示完全展开。 ### 接口测试 在Swagger文档页面中,每个接口都提供了"Try it out"按钮,点击后可以填写请求参数,然后发送请求进行测试,方便开发者在开发

gitblog_00854的博客 1050

RESTful API设计:从原则到Gin实现

RESTful API 是一种基于 HTTP 协议的架构风格,广泛应用于现代 Web 应用的前后端通信。其优势包括设计简单直观、无状态性、良好的可扩展性和跨平台互操作性。核心设计原则包括使用 HTTPS 协议、专属域名、版本控制、资源路径、标准 HTTP 方法和状态码。然而,RESTful 架构也存在一些局限性,如数据获取效率问题、同步请求的性能瓶颈、客户端与服务器的紧耦合等。随着应用需求的发展,GraphQL、gRPC 等新兴技术提供了替代方案。本文还通过 Gin 框架展示了如何设计一组符合 RESTfu

Lyajpunov的博客 759

golang gin框架使用swagger生成接口文档

前言 一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。 本文将介绍如何使用swagger生成接口文档。 swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计、构建、记录和使用RESTful Web服务。Swagger包括自动文档,代码生成和测试用例生成。 在前后端分离的项...

牛奔的博客 1711
上一篇: Gin(八): Cookie 的使用
下一篇: Gin(十):集成 Swagger 生成 API 文档
代码猎奇站
博客等级 码龄7年 39粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值