热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ginweb开发入门

Day01简单部署Gin框架ps:首次执行的时候我是mac默认的go1.12版本,然后就很多错误。后来换成go1.14.5版本,执行下方

Day01 简单部署Gin框架

ps:首次执行的时候我是mac默认的go 1.12版本,然后就很多错误。后来换成go 1.14.5版本,执行下方教程就好啦。

01.安装Go语言开发环境

使用mac命令行,brew工具直接安装,代码如下:

brew install go

运行完成没有报错就是安装成功

02.安装Gin框架

使用官方提供的命令安装。(前提:需要设置go全局的path变量,自行查找方案,不做过多介绍)

go get -u github.com/gin-gonic/gin

这里直接运行命令的话会出现 连接超时报错。因为get的资源中包含一些其他的资源引用,这部分正好处于google包中或其他国内不能访问的包中。
解决方法:
设置GOPROXY变量,用于获取这部分资源,然后get到本地。

使用 go env 命令查看 GOPROXY变量的值。
执行以下命令,打开modules 然后设置goproxy代理

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

完成上述操作后,再执行第一步的go get命令,没有报错就证明下载成功。可以到gopath目录下查找gin包。

03.部署Gin 简单web页面

首先,构建go源码文件,导入gin包

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

然后根据官网给的example,如下:

package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

最后,执行go run xxx.go执行
注意:最后执行的时候大概率会报错

main.go:3:8: cannot find module providing package github.com/gin-gonic/gin: working directory is not part of a module

具体原因是因为go mod 本身的资源管理问题,在开启modules的时候,资源路径改变,导致不能正确访问到gin包。导致go代码中 import 的时候没有引入gin包。

解决方法:在当前执行代码的目录下,执行以下命令。

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

这个好像是类似于nodejs的npm包管理工具,了解不多不做过多描述,以免误导各位。

小技巧:使用go build 的时候可以使用-o参数指定生成的文件名称
gin_test 自定义的生成文件名称
gin_demo.go程序源代码

go build -o gin_test gin_demo.go

关于Gin API方面,官网提供Using GET, POST, PUT, PATCH, DELETE and OPTIONS

func main() {// Creates a gin router with default middleware:// logger and recovery (crash-free) middlewarerouter := gin.Default()router.GET("/someGet", getting)router.POST("/somePost", posting)router.PUT("/somePut", putting)router.DELETE("/someDelete", deleting)router.PATCH("/somePatch", patching)router.HEAD("/someHead", head)router.OPTIONS("/someOptions", options)// By default it serves on :8080 unless a// PORT environment variable was defined.router.Run()// router.Run(":3000") for a hard coded port
}

值得一提的是,通过网址访问http://127.0.0.1:8080/ 默认使用的get请求,用其他的都会404,应该是前端请求时候要指定是post或者delete或其他的请求才能正确访问到。

好像是根据RESTful API接口风格来定义的,感兴趣的可以看下阮一峰老师的博文:
RESTful API 设计指南

在这里的话如果我们想要看其他请求的效果,可以使用postman api测试,选择请求方式,填写url地址就可以发起请求,然后看到返回的数据。
postman 原创截图

Gin框架官方文档:https://gin-gonic.com/docs/.


推荐阅读
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
author-avatar
seazz2001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有