首頁 > 後端開發 > Golang > 主體

為什麼我選擇'golly”框架來建立我的下一個基於 Golang 的 REST API?

Mary-Kate Olsen
發布: 2024-10-24 06:18:30
原創
344 人瀏覽過

為什麼選擇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
登入後複製
登入後複製

執行上述操作後,您應該可以看到如下所示的資料夾結構

Why I chose

現在我們可以開始建立我們想要的伺服器結構

建立一個 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()
}

登入後複製

您想要實現的應用程式結構如下

Why I chose

在 /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()
}
登入後複製
登入後複製

輸出應如下圖

Why I chose
您可以看到註冊的端點以及伺服器的啟動位置。

伺服器啟動後,您可以使用 Postman 或 Curl 指令來呼叫您的 API。

您可以看到我們使用 golang 中的 golly 框架啟動 REST 伺服器的速度有多快。

使用 golly 作為建立 Go 應用程式的首選框架的好處

  • 所有使用的函式庫,包括生命週期管理、UUID 產生、日誌記錄、休息伺服器管理等等,都是由 golly 開箱即用提供的。
  • 存在大量內建程式庫,我不必導入多個第三方庫,這使我的 go.mod 保持乾淨和易於管理。
  • 簡單快速的模組實施,輕鬆的學習曲線。
  • 開源函式庫

有關 golly 的更多詳細信息,請訪問存儲庫 Golly。您可以查看程式碼並隨時貢獻!

感謝您閱讀這篇文章! !
如果您有任何疑問,請在評論中添加。

以上是為什麼我選擇'golly”框架來建立我的下一個基於 Golang 的 REST API?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!