Gin(九):生成restful接口

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

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

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

?restful 是什么

说到 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 请求方式做最简单的介绍。

?第一个接口

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

首先建立数据库,仍旧是在我们之前使用的数据库上建立新的表 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)
	}

⭕测试

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

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

在 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 等来进行测试,这里给大家简单的介绍一下 GoLand Http 测试工具。

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

新建.http文件

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

POST http://localhost:8080/article
Content-Type: application/json

{
  "type": "go",
  "content": "Hello Go"
}

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

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

✍总结

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

?‍?本章节示例代码

Github

个人公众微信号

文章与个人公众号同步更新,欢迎各位扫码关注。

在这里插入图片描述

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

滤波算法-呼吸心跳信号检测方法(四)

呼吸心跳信号检测系列文章:信号滤波处理

yjh_2019的博客 6273

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

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 954

手把手教你搭建工业级C#上位机:完整架构+通信+配置+日志,新手也能落地(附全套源码)

模型层是“数据容器”,统一数据格式,避免参数传递混乱。本文搭建的C#上位机,采用“分层+模块化”架构,解耦了UI、通信、配置、日志四大核心功能,不仅满足工业场景的基础需求,还为后续扩展打下基础。新手跟着步骤走,既能掌握上位机的核心开发技能,又能理解工业级项目的架构设计思路。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1157

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

【华为OD机试真题 2025C卷】238、贪吃蛇 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】238、贪吃蛇 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为od,

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 197

【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

如何通过单步调试的方法,找到 SAP Gateway 到底把 Fiori 应用发送的 OData 请求,投递到哪一台 ABAP 后台服务器了?

这是一个 Count 请求,得到服务器响应的数据是 204,这个 204 会以数字的形式,显示在 Fiori Launchpad tile 上。那如果当前 Gateway 系统可以连接到多台 ABAP 后台服务器,比如下图所示,可以连接 SAP S/4HANA,ERP 或者 SAP CRM,我怎么知道 SAP UI5 应用上显示的数据,到底来自哪一台 ABAP 后台服务器呢?,就是上图 ABAP 调试器里断点停留的位置,即 SAP Frontend 服务器,通过 RFC 将 OData 请求投递给。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 644

嵌入式开发之瑞芯微RK356x--基本环境搭建

嵌入式环境搭建

NexyHO的博客 618

Gin(九):生成 restful 接口

点击蓝色字关注我们!一个努力中的公众号长的好看的人都关注了经过前面几章节的学习,基本对 Gin 中的一些概念和函数有所了解和掌握,也知道如何在代码中对其进行使用,那么接下...

代码猎奇站 573

UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取

在采用NXOpen C++进行二次开发时,采用Menu/UIStyler是一种很常见的方式,这样可以制作精美的界面,而且常用的块对象也集成了快速编程的代码,我们可以快速的利用这些块来定制我们需要的界面。但是,对于很多初学者可能对选择对象的获取不是很熟悉,我们本文以选择“指定平面”来讲一下如何获取选择的对象和对象的参数。另外,由于我们的UG NX二次开发学习讨论群QQ一群已满,有希望参与学习的有志之士加入我们的QQ二群:683566590。

GimiGimmy 1092

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

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

weixin_36054159的博客 168

10分钟搞定manim安装与vscode配置

manim安装与vscode配置

帅帅de三叔 3413

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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
代码猎奇站
博客等级 码龄7年 39粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值