日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ginapi服务器性能,gin框架构建Api之:环境配置和路由

發布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ginapi服务器性能,gin框架构建Api之:环境配置和路由 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Gin是一個golang的微框架,封裝比較優雅,API友好,源碼注釋比較明確,已經發布了1.0版本。具有快速靈活,容錯方便等特點。其實對于golang而言,web框架的依賴要遠比Python,Java之類的要小。自身的net/http足夠簡單,性能也非常不錯。框架更像是一些常用函數或者工具的集合。借助框架開發,不僅可以省去很多常用的封裝帶來的時間,也有助于團隊的編碼風格和形成規范。

什么是 API

API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數或者接口,目的是提供應用程序與開發人員基于某軟件或硬件得以訪問一組例程的能力,而又無須訪問源碼,或理解內部工作機制的細節。

要實現一個 API 服務器,首先要考慮兩個方面:API 風格和媒體類型。Go 語言中常用的 API 風格是 RPC 和 REST,常用的媒體類型是 JSON、XML 和 Protobuf。在 Go API 開發中常用的組合是 gRPC + Protobuf 和 REST + JSON,本次我們使用gin作為api服務的構建框架。

加載路由,并啟動 HTTP 服務

main.go 中的 main() 函數是 Go 程序的入口函數,在 main() 函數中主要做一些配置文件解析、程序初始化和路由加載之類的事情,最終調用 http.ListenAndServe() 在指定端口啟動一個 HTTP 服務器。本小節是一個簡單的 HTTP 服務器,僅初始化一個 Gin 實例,加載路由并啟動 HTTP 服務器。

開發環境搭建

Go 有多種安裝方式,比如 Go 源碼安裝、Go 標準包安裝、第三方工具(yum、apt-get 等)安裝。本小冊 API 運行在 Linux 服務器上,選擇通過標準包來安裝 Go 編譯環境。Go 提供了每個平臺打好包的一鍵安裝,這些包默認會安裝到如下目錄:/usr/local/go。當然你可以改變它們的安裝位置,但是改變之后你必須在你的環境變量中設置如下兩個環境變量:

GOROOT:GOROOT 就是 Go 的安裝路徑

GOPATH:GOPATH 是作為編譯后二進制的存放目的地和 import 包時的搜索路徑

假定你想要安裝 Go 的目錄為 $GO_INSTALL_DIR,后面替換為相應的目錄路徑,安裝步驟如下。

下載安裝包

安裝包下載地址為 golang.org,如果打不開可以使用這個地址:golang.google.cn。

Linux 版本選擇 goxxxxx.linux-amd64.tar.gz 格式的安裝包,這里在 Linux 服務器上直接用 wget 命令下載:

$ wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz

設置安裝目錄

$ export GO_INSTALL_DIR=$HOME

這里我們安裝到用戶主目錄下。

解壓 Go 安裝包

$ tar -xvzf go1.10.2.linux-amd64.tar.gz -C $GO_INSTALL_DI

設置環境變量

$ export GO_INSTALL_DIR=$HOME

$ export GOROOT=$GO_INSTALL_DIR/go

$ export GOPATH=$HOME/ginserver

$ export PATH=$GOPATH/bin:$PATH:$GO_INSTALL_DIR/go/bin

如果不想每次登錄系統都設置一次環境變量,可以將上面 4 行追加到 $HOME/.bashrc 文件中。

執行 go version 檢查 Go 是否成功安裝

$ go version

go version go1.10.2 linux/amd64

看到 go version 命令輸出 go 版本號 go1.10.2 linux/amd64,說明 go 命令安裝成功。

創建 $GOPATH/src 目錄, $GOPATH/src是 Go 源碼存放的目錄,所以在正式開始編碼前要先確保 $GOPATH/src 目錄存在,執行命令:

$ mkdir -p $GOPATH/src

加載路由,并啟動 HTTP 服務

main.go 中的 main() 函數是 Go 程序的入口函數,在 main() 函數中主要做一些配置文件解析、程序初始化和路由加載之類的事情,最終調用 http.ListenAndServe() 在指定端口啟動一個 HTTP 服務器。本小節是一個簡單的 HTTP 服務器,僅初始化一個 Gin 實例,加載路由并啟動 HTTP 服務器。

編寫入口函數,編寫 main() 函數,main.go 代碼:

package main

import (

"runtime"

"com.api.com/router"

)

func main() {

runtime.GOMAXPROCS(runtime.NumCPU())

routers := router.InitRouter()

routers.Run(":8080")

}

加載路由 src/com.api.com/router/router.go

.........

// InitRouter 定義路由及函數

func InitRouter() *gin.Engine {

router := gin.Default()

load(

// Cores.

router,

// Middlwares.

middleware.Logging(),

)

//router.GET("/video/getAddressByFileId", http.GetAddressByFileID)

return router

}

自定義recovery捕獲錯誤

gin.Recovery():在處理某些請求時可能因為程序 bug 或者其他異常情況導致程序 panic,這時候為了不影響下一次請求的調用,需要通過 gin.Recovery()來恢復 API 服務器

`````

type recovery struct {

//out optional output to log any panics

}

func (r recovery) Serve(ctx *gin.Context) {

defer func() {

if err := recover(); err != nil {

fmt.Println("recover from panic", err.(error),string(debug.Stack()))

errJson, _:= json.Marshal(ctx.Request.URL.Query())

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的ginapi服务器性能,gin框架构建Api之:环境配置和路由的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。