helloGin

简介: helloGin

文章目录


缘起

前几天无聊,去图书馆,看书的时候,突然发现了一本《Go 编程语言》.随手一翻,好家伙,这不正是我的入门语言C \ C++的升级版吗,然后就30分钟入了个小门。刚好今天无聊,就来尝试一下Gin,(一个Go的Web微型框架)。

等我再多学几天,再来对比一下,gin跟python的Flask,以及NodeKoa的差别。

初探

talk is cheap , show me the code


  1. 下载gin
go get -u github.com/gin-gonic/gin

这里如果没有设置代理的话,可能会报go get: module github.com/kardianos/govendor: Get "https://proxy.golang.org/github.com/kardianos/govendor/@v/list": dial tcp 142.251.43.17:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

开梯子也解决不了,运行下面这条指令,设置代理,即可

go env -w GOPROXY=https://goproxy.cn
  1. 创建demo文件夹
  2. 敲下hello
package main
import (
  "github.com/gin-gonic/gin"
)
func main() {
  r := gin.Default()
  r.GET("/hello", func(c *gin.Context) {
    c.JSON(200, gin.H{"hello": "world"})
  })
  r.Run()
}

注意这里,很大概率会遇到这样一个报错

no required module provides package github.com/gin-gonic/gin: go.mod file not found in current directory or any parent directory; see 'go help modules'

运行以下命令,借鉴我就想试试github.com/gin-gonic/gin,为什么死活都run不起来 - Go语言中文网 - Golang中文社区 (studygolang.com)

go mod init gin
  go mod edit -require github.com/gin-gonic/gin@latest

类似于node

yarn 
yarn add .
  1. 运行程序

  1. 浏览器访问

  1. 编译器变化

一些基本用法

获取param以及query参数

package main
import (
  "fmt"
  "github.com/gin-gonic/gin"
)
func main() {
  r := gin.Default()
  r.GET("/hello/:id", func(c *gin.Context) {
    // 获取单个param参数
    id := c.Param("id")
    // 获取query参数
    name := c.Query("name")
    fmt.Printf("id=%s, name=%s\r\n", id, name)
    c.JSON(200, gin.H{
      "data": "get",
      // "params":params
    })
  })
  r.Run()
}
  • 启动

  • 访问

  • 编译器变化

路由分组

类似于node的prefix

package main
import (
  "fmt"
  "github.com/gin-gonic/gin"
)
func main() {
  r := gin.Default()
  // 路由分组
  v1 := r.Group("v1")
  {
    // 可以在代码块里面定义,并比较规范
    // 当然如果你想在外面定义也可以,只是没那么规范
    v1.GET("/get", func(c *gin.Context) {
      c.JSON(200, gin.H{
        "data":  "v1/get",
        "hello": "world",
      })
    })
    v1.GET("/get1", func(c *gin.Context){
      c.JSON(200, gin.H{
        "data":"v1/get1"
      })
    })
  }
  v1.GET("/hello", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "data":  "v1/hello",
      "hello": "world",
    })
  })
  r.Run()
}
  • 结果

绑定端口

r.Run()改成r.Run(":3000") 即可绑定3000端口启动。

打包

go build

Windows环境下会生成一个exe

双击打开,即可直接访问,不再需要go run xx

[官方文档](gin-gonic/gin: Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance – up to 40 times faster. If you need smashing performance, get yourself some Gin. (github.com))

相关文章
|
10天前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
15 5
|
21天前
|
IDE 网络安全 开发工具
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
本文介绍了如何使用VS Code通过Remote-SSH插件连接远程服务器进行代码开发,并与PyCharm进行了对比。作者认为VS Code在连接和配置多个服务器时更为简单,推荐使用VS Code。文章详细说明了VS Code的安装、远程插件安装、SSH配置文件编写、服务器连接以及如何在连接后切换文件夹。此外,还提供了使用密钥进行免密登录的方法和解决权限问题的步骤。
182 0
IDE之vscode:连接远程服务器代码(亲测OK),与pycharm链接服务器做对比(亲自使用过了),打开文件夹后切换文件夹。
|
27天前
|
存储 持续交付 开发者
掌握Docker容器化:提升开发效率与应用部署
【10月更文挑战第4天】在现代软件开发中,Docker容器化技术因其轻量级、可移植和快速部署的特点,成为提升开发效率和简化部署流程的关键工具。本文介绍了Docker的基本概念、核心组件及其优势,并探讨了如何在开发环境中搭建、微服务架构及CI/CD流程中有效利用Docker,助力软件开发更加高效便捷。
|
29天前
|
网络安全 数据安全/隐私保护 C++
VS Code 的SSH连接不成功问题分析与解决
VS Code 的SSH连接不成功问题分析与解决
|
1月前
|
存储 Ubuntu JavaScript
如何使用Docker优化你的开发环境配置
如何使用Docker优化你的开发环境配置
|
1月前
|
Docker 容器
利用Docker Compose优化开发环境的配置
在现代软件开发中,环境一致性至关重要。开发人员常需在不同机器间复制环境配置,而Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,确保开发、测试和生产环境一致,简化团队协作,提高开发效率。通过YAML文件配置服务、网络和卷,使用简单命令即可启动和停止服务。本文将介绍Docker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化开发环境。
|
2月前
|
持续交付 开发者 Docker
掌握 Docker:容器化技术在现代开发中的应用
Docker 是一个开源容器化平台,使开发者能够将应用程序及其依赖项封装在轻量级容器中,确保跨平台的一致性。本文介绍了 Docker 的基本概念、核心组件及优势,并展示了其在快速部署、一致性、可移植性和微服务架构中的应用。通过示例说明了 Docker 在本地开发环境搭建、服务依赖管理和 CI/CD 流程中的作用,以及多阶段构建、资源限制和网络模式等高级特性。掌握 Docker 可大幅提升开发效率和应用管理能力。
|
1月前
|
数据可视化 应用服务中间件 nginx
Docker如何连接至本地私服Harbor中 推送镜像、查看镜像、下载镜像
Docker如何连接至本地私服Harbor中 推送镜像、查看镜像、下载镜像
74 0
|
2月前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
165 0
|
3月前
|
机器学习/深度学习 Kubernetes Docker
机器学习开发的灵药:Docker容器
机器学习开发的灵药:Docker容器