GoLang开发使用gin框架搭建web程序

目录

1.SDK安装

​2.编辑器下载

3.编辑器准备

4.使用

4.1常见请求方式


1.SDK安装

保证装了Golang的sdk(官网下载windows.zip->解压,安装,配置bin的环境变量)

GoLang开发使用gin框架搭建web程序_第1张图片

2.编辑器下载

Download GoLand: A Go IDE with extended support for JavaScript, TypeScript, and databases (jetbrains.com)

3.编辑器准备

新建mod和一个main.go,打开命令行,拉取gin,下载慢配置阿里云镜像

配置阿里云镜像dos:go env -w GOPROXY=https://goproxy.io
拉取gin框架的dos: go get -u github.com/gin-gonic/gin

GoLang开发使用gin框架搭建web程序_第2张图片

配置settings

GoLang开发使用gin框架搭建web程序_第3张图片

4.使用

下载完导入下载的包,编写简单的get接口

package main

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

func main() {
	// 创建一个服务
	ginServer := gin.Default()
	// 访问地址,处理我们的请求  Request  Response
	ginServer.GET("/hello", func(context *gin.Context) {
		// 给前端相应json数据
		context.JSON(200, gin.H{"msg": "hello,world"})
	})
	// 服务器端口
	err := ginServer.Run(":8082")
	if err != nil {
		return
	}
}

验证

GoLang开发使用gin框架搭建web程序_第4张图片

4.1常见请求方式

Go支持resfulAPI  post get put delete...
下边测试一个post

package main

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

func main() {
	// 创建一个服务
	ginServer := gin.Default()
	ginServer.Use()
	//连接数据库的代码
	// 访问地址,处理我们的请求  Request  Response
	ginServer.GET("/hello", func(context *gin.Context) {
		// 给前端相应json数据
		context.JSON(200, gin.H{"msg": "hello,world"})
	})
	ginServer.POST("/user", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": "hello,post"})
	})

	// 服务器端口
	err := ginServer.Run(":8082")
	if err != nil {
		return
	}
}

GoLang开发使用gin框架搭建web程序_第5张图片

前后端传递值:前端传递JSON数据

package main

import (
	"encoding/json"
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	// 创建一个服务
	ginServer := gin.Default()
	ginServer.Use()
	
	//前端给后端传递json
	ginServer.POST("/json", func(context *gin.Context) {
		//request.body
        // 该方法返回的是一个切片[]byte,把切片包装成我们想要的对象
		b, _ := context.GetRawData()
        //go 语言的object可以用空接口来表示,可以接收一切事物
		var m map[string]interface{}
        // json解析 这里包装成map
		_ = json.Unmarshal(b, &m)
        // 返回前端json数据
		context.JSON(http.StatusOK, m)

	})

	// 服务器端口
	err := ginServer.Run(":8082")
	if err != nil {
		return
	}
}


GoLang开发使用gin框架搭建web程序_第6张图片

前后端传值,前端提交表单

package main

import (
	"encoding/json"
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	// 创建一个服务
	ginServer := gin.Default()
	ginServer.Use()
	
	//前端提交表单
	ginServer.POST("/user/add", func(context *gin.Context) {
		username := context.PostForm("username")
		password := context.PostForm("password")
		context.JSON(http.StatusOK, gin.H{
			"username": username,
			"password": password,
		})
	})

	// 服务器端口
	err := ginServer.Run(":8082")
	if err != nil {
		return
	}
}

验证

GoLang开发使用gin框架搭建web程序_第7张图片

路由、404、路由组

//路由
	ginServer.GET("/test", func(context *gin.Context) {
		context.Redirect(http.StatusMovedPermanently, "http://www.baidu.com")
	})
	
	// 404
	ginServer.NoRoute(func(context *gin.Context) {
		context.HTML(http.StatusNotFound, "404.html", nil)
	})
	
	//路由组
	userGroup := ginServer.Group("/user")
	{
		userGroup.GET("add")
	}

	orderGroup := ginServer.Group("/order")
	{
		orderGroup.GET("/delect", func(context *gin.Context) {
			context.JSON(http.StatusOK,gin.H{
				"msg":"删除操作",
			})
		})
	}

中间件(拦截器)

//自定义Go中间件 拦截器
func handler() gin.HandlerFunc {
	return func(context *gin.Context) {
		// 通过自定义的中间件,设置的值,在后续处理只要调用了这个中间件的都可以拿到这里的参数
		context.Set("userSession","userid-1")
		
		// 判断
		//......
		
		context.Next() // 放过
		context.Abort() // 拦截
	}
}

使用
找一个方法,把拦截器名字作为参数放入

ginServer.GET("/user/info",myHandler(), func(context *gin.Context) {
		// 取出中间件中的值
		userSession := context.MustGet("userSession").(string)
		userid := context.Query("userid")
		username := context.Query("username")
		context.JSON(http.StatusOK, gin.H{
			"userid":   userid,
			"username": username,
			"userSession":userSession,
		})
	})

验证

GoLang开发使用gin框架搭建web程序_第8张图片

多线程

package main

import (
	"fmt"
	"time"
)

func main() {
	// go的多线程-协程
	go printgogogo()
	for i := 0; i < 1000; i++ {
		fmt.Println("main", i)
	}
	time.Sleep(time.Second * 3)
}
func printgogogo() {
	for i := 1; i < 1000; i++ {
		fmt.Println("printgogogogo", i)
	}
}

你可能感兴趣的:(golang,gin,开发语言)