ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用 Go 和 gin-gorm 构建简单的 REST API

2023-03-20 11:52:48  阅读:11290  来源: 互联网

标签:Web开发 后端 编程


REST ( Representational State Transfer ) 是一种使用 HTTP 协议进行数据交换的通信架构方法。应用程序编程接口(API)是计算机之间或计算机程序之间的连接。它是一种软件接口,为其他软件提供服务。简而言之,API 可以使其他应用程序,无论是移动应用程序还是其他应用程序,都可以与我们的应用程序进行通信。

在这篇文章中,我想分享如何使用gin和gorm以简单的方式在 Go 中创建一个简单的 REST API。

首先,使用 go mod 命令创建新的 go 项目

# 创建文件夹
mkdir go-api 
# 将目录更改为 go-api 
cd go-api 
# 初始化 go 项目
go mod init go-api

安装 gin 包

去获取-u github.com/gin-gonic/gin

安装 gorm 包和 db 驱动,db 驱动可以根据需要定制。对于支持的数据库驱动程序,您可以在此处签入。在这篇文章中,我将使用 postgreSQL。

去获取-u gorm.io/gorm
去获取-u gorm.io/driver/postgres

由于 Go 让我们根据自己的需要构建项目,而且 Go 没有标准结构。这是我将用于此项目的结构,或者您可以定义自己的结构。

 

src/config
为 set db connection in 创建一个 go 文件,我将在as中创建它db.go

数据库

导入( 
 "gorm.io/driver/postgres" 
 "gorm.io/gorm"
 ) 

func  Connect () *gorm.DB { 
dsn := "host=localhost user=root password=root dbname=go-api port= 9920 sslmode=disable TimeZone=Asia/Shanghai"
 db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) 
 if err != nil { 
  panic (err) 
}

 返回db 
}

然后创建一个结构来表示我们来自数据库的数据,在此我将创建一个简单的src/apps/post/model.go

package post 

type Post struct { 
ID     int     `json:"id"`
标题字符串 `json:"title"`
正文  字符串 `json:"body"`
 }

然后创建一个控制器或处理程序文件src/apps/post/handler.go

 

创建一个 go 文件src/cmd/main/main.go,然后添加代码来设置路由器。

package main 

import ( 
 "go-api/src/apps/post" 
 "go-api/src/config/database" 

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

func  main () { 
 // 连接到数据库
db : = database.Connect() 

 // 迁移数据库
db.AutoMigrate(&post.Post{}) 

 // 创建post处理程序
postHandler := post.NewPostHandler(db) 

 // 创建路由器
router := gin.Default() 
api := router .Group( "/api" ) 
postRoute := api.Group( "/post" ) 
postRoute.GET( "" , postHandler.GetPosts) 
postRoute.GET( "/:id", postHandler.GetPost) 
postRoute.POST( "" , postHandler.CreatePost) 
postRoute.PUT( "/:id" , postHandler.UpdatePost) 
postRoute.DELETE( "/:id" , postHandler.DeletePost) 

 // 运行服务器
路由器。运行()
}

测试
运行go run src/cmd/main/main.go,一旦我们的应用程序运行,我们就可以使用邮递员、失眠等应用程序测试我们的 API。我将使用邮递员来测试我们的 API。

        更新帖子

标签:Web开发,后端,编程
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有