为什么我选择'golly”框架来构建我的下一个基于 Golang 的 REST API?
为什么选择Go(Golang)进行服务器端开发?
选择 Go (Golang) 进行服务器端开发通常是由其关键优势驱动的:
性能:Go 的并发模型基于 Goroutine 和 Channel,可以同时高效处理多个任务,非常适合高性能服务器应用。
简单性:该语言的设计简单易读,语法简约。这使得维护变得更容易,即使对于大型项目也是如此。
快速编译和执行:Go 直接编译为机器代码,与 Python 或 Node.js 等解释性语言相比,执行速度更快。
可扩展性:Go 内置的并发性和轻量级特性使其成为构建可处理大量请求的可扩展服务的不错选择。
强大的标准库:Go 附带了强大的标准库,特别是用于构建网络服务、处理 HTTP 和管理并发,减少对外部依赖的需求。
这些因素使 Go 非常适合现代服务器端应用程序,特别是当性能和可扩展性很重要时。
如何在 Golang 中构建 REST API 服务器?
有很多框架可以在 Golang 中构建 REST API 服务器,例如 Gin、Gorrilla-Mux 等等。
我们将使用一个新的框架 golly,它提供了一套全面的工具来构建您的 Golang 应用程序。
让我们深入了解实施
我们想要构建的所需 API
GET /api/v1/users POST /api/v1/users PUT /api/v1/users/:id DELETE /api/v1/users/:id
一旦我们定义了所需的 API,我们就开始启动 go 项目。使用以下命令:-
mkdir my-go-server cd my-go-server go mod init rest_server go get oss.nandlabs.io/golly
执行上述操作后,您应该能够看到如下所示的文件夹结构
现在我们可以开始创建我们想要的服务器结构
创建一个 main.go 文件,其中包含 main(),即 golang 应用程序的入口点
package main import "rest_server/server" func main() { // create the instance of your server srv := server.NewServer() // start your server srv.Start() }
创建一个 /server/server.go 文件,其中包含您的服务器配置
package server import ( "rest_server/handlers" "rest_server/store" "oss.nandlabs.io/golly/lifecycle" "oss.nandlabs.io/golly/rest/server" ) type Server struct { store *store.Store } func NewServer() *Server { return &Server{ store: store.NewStore(), } } func (s *Server) Start() { // register the router by creating the server object restServer, err := server.Default() if err != nil { panic(err) } // Add path prefix if you want restServer.Opts().PathPrefix = "/api/v1" // register routes restServer.Get("/users", handlers.GetUsers) restServer.Post("/users", handlers.AddUser) restServer.Put("/users/:id", handlers.UpdateUser) restServer.Delete("/users/:id", handlers.DeleteUser) // create the http.Server object and register the router as Handler // provide the necessary configurations such as PORT, ReadTimeout, WriteTimeout... manager := lifecycle.NewSimpleComponentManager() // Register the server manager.Register(restServer) // start the server manager.StartAndWait() }
您想要实现的应用程序结构如下
在 /store/store.go 下创建一个内存存储以测试您的 CRUD 操作。
package store import "rest_server/models" type Store struct { data map[string]models.Item } var initStore *Store func NewStore() *Store { initStore = &Store{data: make(map[string]models.Item)} return initStore } func GetStore() *Store { return initStore } func (s *Store) GetAll() []models.Item { items := []models.Item{} for _, item := range s.data { items = append(items, item) } return items } func (s *Store) GetById(id string) (item models.Item, exists bool) { item, exists = s.data[id] return } func (s *Store) Put(id string, item models.Item) { s.data[id] = item } func (s *Store) Delete(id string) { delete(s.data, id) }
这指的是 /models/item.go 下的模型
GET /api/v1/users POST /api/v1/users PUT /api/v1/users/:id DELETE /api/v1/users/:id
处理程序将包含 /server/server.go 下定义的每个端点的处理程序。
/handlers/AddUser.go 的一个这样的实现如下
mkdir my-go-server cd my-go-server go mod init rest_server go get oss.nandlabs.io/golly
类似地,您可以使用所需的逻辑创建其他处理程序。
完整示例可以在此 github 存储库中找到
创建服务器后,您可以使用以下命令启动服务器
package main import "rest_server/server" func main() { // create the instance of your server srv := server.NewServer() // start your server srv.Start() }
输出应如下所示
您可以看到注册的端点以及服务器的启动位置。
服务器启动后,您可以使用 Postman 或 Curl 命令来调用您的 API。
您可以看到我们使用 golang 中的 golly 框架启动 REST 服务器的速度有多快。
使用 golly 作为构建 Go 应用程序的首选框架的好处
- 所有使用的库,包括生命周期管理、UUID 生成、日志记录、休息服务器管理等等,都是由 golly 开箱即用提供的。
- 存在大量内置库,我不必导入多个第三方库,这使我的 go.mod 保持干净和易于管理。
- 简单快速的模块实施,轻松的学习曲线。
- 开源库
有关 golly 的更多详细信息,请访问存储库 Golly。您可以查看代码并随时贡献!
感谢您阅读这篇文章!!
如果您有任何疑问,请在评论中添加。
以上是为什么我选择'golly”框架来构建我的下一个基于 Golang 的 REST API?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

OpenSSL,作为广泛应用于安全通信的开源库,提供了加密算法、密钥和证书管理等功能。然而,其历史版本中存在一些已知安全漏洞,其中一些危害极大。本文将重点介绍Debian系统中OpenSSL的常见漏洞及应对措施。DebianOpenSSL已知漏洞:OpenSSL曾出现过多个严重漏洞,例如:心脏出血漏洞(CVE-2014-0160):该漏洞影响OpenSSL1.0.1至1.0.1f以及1.0.2至1.0.2beta版本。攻击者可利用此漏洞未经授权读取服务器上的敏感信息,包括加密密钥等。

在BeegoORM框架下,如何指定模型关联的数据库?许多Beego项目需要同时操作多个数据库。当使用Beego...

后端学习路径:从前端转型到后端的探索之旅作为一名从前端开发转型的后端初学者,你已经有了nodejs的基础,...

Go语言中使用RedisStream实现消息队列时类型转换问题在使用Go语言与Redis...

GoLand中自定义结构体标签不显示怎么办?在使用GoLand进行Go语言开发时,很多开发者会遇到自定义结构体标签在�...

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

本文介绍如何在Debian系统上配置MongoDB实现自动扩容,主要步骤包括MongoDB副本集的设置和磁盘空间监控。一、MongoDB安装首先,确保已在Debian系统上安装MongoDB。使用以下命令安装:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集确保高可用性和数据冗余,是实现自动扩容的基础。启动MongoDB服务:sudosystemctlstartmongodsudosys
