基于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 &   //将程序放在后台运行,并输出日志到指定文件
posted @ 2020-08-04 17:21  开怀的猫  阅读(3610)  评论(0编辑  收藏  举报