基於GIN的API接口從開發到部署-簡單示例


開發環境

  • 操作系統:WINDOWS7
  • 編輯器:VSCODE
  • GO版本:go1.14.2

開發步驟

  • 利用 go mod 創建項目

使用go mod 管理項目,可以更加靈活的在項目中管理對應的go包

  1. 新建項目gorestful,建立文件夾,路徑 E:\1234\gorestful
  2. 進入目錄 E:\1234\gorestful 里,新建入口文件: main.go
  3. 在 E:\1234\gorestful 里打開終端執行命令:go mod init gorestful . 初始化成功后會在當前目錄下生成一個 go.mod 文件。

下面進入go包引用,和程序編碼過程

  • 利用 gin 創建 restful api
  1. 需求

接口1:get方法,訪問一個路由,返回客戶端IP

接口2:post方法,訪問一個路由,傳遞一個json字符串,根據內容請求另一個API接口后返回值

  1. 編碼

main.go 源碼

package main

import (
	"bytes"
	"fmt"
	"io/ioutil"
	"net/http"
	"encoding/json"	
	"github.com/gin-gonic/gin"
)

// 綁定為json
type Ques struct {
	Question string `form:"question" json:"question" xml:"question"  binding:"required"`
}


//gin使用  https://www.jianshu.com/p/98965b3ff638/

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		ipAddr := c.ClientIP()
		fmt.Println(ipAddr)
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})

	r.POST("/postjson", func(c *gin.Context) {
		var objjson Ques
		
		if err := c.ShouldBindJSON(&objjson); err != nil {
			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
			return
		}


		//---調用遠程 遠端 API server 過程----------------------

		//Go的json解析:Marshal與Unmarshal  https://www.jianshu.com/p/3534532e06ed
		quesjson, err := json.Marshal(objjson)
		if err != nil {
			fmt.Println("接收json字符串格式錯誤")
		}
		fmt.Println("json串:", string(quesjson))
		//向python server 發送post json請求 返回json串
		url := "http://192.168.300.163:8009/testpost"
		fmt.Println("URL:>", url)

		var jsonStr = []byte(string(quesjson))
		req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
		//req.Header.Set("X-Custom-Header", "myvalue")
		req.Header.Set("Content-Type", "application/json")

		client := &http.Client{}
		resp, err := client.Do(req)
		if err != nil {
			panic(err)
		}
		defer resp.Body.Close()

		fmt.Println("response Status:", resp.Status)
		fmt.Println("response Headers:", resp.Header)
		body, _ := ioutil.ReadAll(resp.Body)
		fmt.Println("response Body:", string(body))
		fmt.Println("post json:", objjson.Question)

		//----遠程調用結束--------------------------------------

		//返回json結果
		c.JSON(http.StatusOK, gin.H{"從客戶端接收的值為:": objjson.Question})
	})
	r.Run() // 服務默認監聽地址 0.0.0.0:8080
}

程序部署

將程序打包和部署到centos7

  • 程序打包,項目文件夾下運行以下命令行語句
set GOOS=linux  //設置目標操作系統
set GOARCH=amd64 //設置目標系統架構
go build -o "ginAPI"  //生成打包后的文件
  • Linux 服務器部署

將程序上傳到Linux服務器指定的目錄,執行下列命令

chmod 777 ginAPI     //修改程序權限
nohup ./ginAPI >log.txt 2>&1 &   //將程序放在后台運行,並輸出日志到指定文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM