go语言gin框架的基本使用

1.首先在linux环境上安装go环境,这个网上搜搜就行

2.初始化一个go mod,网上搜搜怎么初始化

3.下面go代码的网址和端口绑定自己本机的就行

4.与另一篇CSDN一起食用,效果更好哟---> libcurl的get、post的使用-CSDN博客

Go 复制代码
package main

import (
    "github.com/gin-gonic/gin"
	"flag"
	"fmt"
)

func downFile(c *gin.Context, filePath string, filename string)  {

    c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))
    c.Writer.Header().Add("Content-Type", "application/octet-stream")
    fmt.Println(filePath)
    c.File(filePath)
}


// go build -o go_gin main.go
func main() {
	var downPath *string = flag.String("down", "/tmp", "the down dir")
	flag.Parse()
	fmt.Printf("downPath = %s\n", *downPath)
	r := gin.Default()
    r.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Hello World!",
		})
	})
    
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })
    
    r.POST("/submit", func(c *gin.Context) {
		var json struct {
			Name string `json:"name"`
			Email string `json:"email"`
		}

		if err := c.Bind(&json); err == nil {
            print("name = " + json.Name)
            print("email = " + json.Email)
			c.JSON(200, gin.H{
				"message": "JSON received",
				"name":    json.Name,
				"email":   json.Email,
			})
		} else {
			c.JSON(400, gin.H{"error": err.Error()})
		}
	})
	// 文件下载
	r.POST("/down_file", func(c *gin.Context) {
		var json struct {
			FileName string `json:"file_name"`
		}
		if err := c.Bind(&json); err == nil {
			filePath := (*downPath) + "/" + json.FileName
			downFile(c, filePath, json.FileName)
		}
		
	})
    
    r.Run("10.74.37.146:9999") // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
相关推荐
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
ttwuai4 天前
Go开源后台管理系统推荐:怎么按技术栈和边界比较4个官方仓库?
golang·gin
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
codeejun4 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超4 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int4 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
Achou.Wang4 天前
k8s中nginx worker process自动设置
后端·golang
CoderYanger4 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法