開發環境
- 操作系統:WINDOWS7
- 編輯器:VSCODE
- GO版本:go1.14.2
開發步驟
- 利用 go mod 創建項目
使用go mod 管理項目,可以更加靈活的在項目中管理對應的go包
- 新建項目gorestful,建立文件夾,路徑 E:\1234\gorestful
- 進入目錄 E:\1234\gorestful 里,新建入口文件: main.go
- 在 E:\1234\gorestful 里打開終端執行命令:go mod init gorestful . 初始化成功后會在當前目錄下生成一個 go.mod 文件。
下面進入go包引用,和程序編碼過程
- 利用 gin 創建 restful api
- 需求
接口1:get方法,訪問一個路由,返回客戶端IP
接口2:post方法,訪問一個路由,傳遞一個json字符串,根據內容請求另一個API接口后返回值
- 編碼
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 & //將程序放在后台運行,並輸出日志到指定文件