当前位置: 首页 > news >正文

网站建设 市场规模网站建设站长之家

网站建设 市场规模,网站建设站长之家,济南建网站工作室,成立公司怎么取名每天都会分享Go的知识,喜欢的朋友关注一下。每天的学习分成两部分基础(必要的,基础不牢地动山摇),另一部分是Go的一些框架知识(会不定时发布,因为小Wei也是一名搬砖人)。但是可以保证…

每天都会分享Go的知识,喜欢的朋友关注一下。每天的学习分成两部分基础(必要的,基础不牢地动山摇),另一部分是Go的一些框架知识(会不定时发布,因为小Wei也是一名搬砖人)。但是可以保证基础部分会每天更新,加强对基础部分的了解,与深入会对这门语言有不一样的了解,至于框架或者其他类型的知识 时间充裕的情况下,会发表一些自己的观点与心得 希望大家多多点评。

不多闲聊了,今天给大家带来的是Gin,初步带大家了解一些Gin的安装、路由、如何访问静态资源等等

一、Gin的安装

根据文档进行安装https://learnku.com/docs/gin-gonic/1.7/quickstart/11354

go get -u github.com/gin-gonic/gin    //go get 的 作用与 git 一样

使用上面的命令后会出现一些报错 遇到 go get 报错不要慌

解决办法:

1:开启go modules功能,命令行输入

go env -w GO111MODULE=on

2:在该项目目录下,初始化Go moudle,运行下面命令

go mod init xxx //xxx代表文件夹名

重新go get 就好了,在test 文件下会出现go.mod和go.sum两个文件,以及外部库 会有test结尾的Modules包

如果没有 请配置一下 idea编辑器 Goland为例

第一 Go模块中的环境 与 go env 中的一致

第二Gopath中

第三 Goroot

和大家在这里说一下Gin这个框架就是一个包儿(熟悉其它语言的同学,看到这个可能不习惯)其他的都需要手动创建 这个main.go就是手动创建的,今天只是初步进行了解 ,就不过多去讲解什么了,到这里的话框架就算搭建完了 ,感兴趣的同学可以输出一下Hello word

二、Restful Api

从其它语言转go的同学应该不陌生这个,刚开始接触的同学也不要慌张,所以就长或短说做个对比

    /**其他语言风格get  /userpost /create_userpost /update_userpost /delete_userGin restfulapiget /userpost /userput  /userdelete /user*///访问地址,处理请求ginServer.GET("/hello", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "hello,word"})})ginServer.POST("/user", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "post,user"})})ginServer.PUT("userPut", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "put,user"})})ginServer.DELETE("userDelete", func(context *gin.Context) {context.JSON(200, gin.H{"msg": "delete,user"})})

举个例子 简单说下格式

package mainimport ("github.com/gin-gonic/gin"
)
/**简单使用流程 1、引入包2、创建服务3、定义端口4、路由请求
*/
func main() {ginServer := gin.Default() //创建一个服务//restful apiginServer.GET("/user", func(context *gin.Context) {//json格式 context.JSON(200, gin.H{"msg": "这是一个Get请求"})})//创建端口/**ginServer.Run("8081")  这是一个错误的写法运行后会报错:listen tcp: address 8081: missing port in address*/ginServer.Run(":8081")  
}

三、如何响应页面给前端web

/**响应页面给前端web加载静态页面*/ginServer.LoadHTMLGlob("templates/*") //全局加载//ginServer.LoadHTMLFiles("templates/index.html")  加载指定文件//加载资源文件ginServer.Static("/static", "./static")ginServer.GET("/index", func(context *gin.Context) {//context.JSON()  返回jsoncontext.HTML(http.StatusOK, "index.html", gin.H{"msg": "这是后台数据",}) //返回页面})

四、如何获取请求参数

//获取请求参数//传统  url?userid=xxx&username=xxxginServer.GET("/user/info", myHandler(), func(context *gin.Context) {//取出中间件值userSession := context.MustGet("userSession").(string)//打印log.Println("userSession=======>", userSession)userid := context.Query("userid")username := context.Query("username")context.JSON(http.StatusOK, gin.H{"userid":   userid,"username": username,})})// restful  url/user/info/xx/xxginServer.GET("/user/infors/:userid/:username", func(context *gin.Context) {userid := context.Param("userid")username := context.Param("username")context.JSON(http.StatusOK, gin.H{"userid":   userid,"username": username,})})

五、如何处理序列化

//序列化 前端给后端传jsonginServer.POST("/json", func(context *gin.Context) {//request.bodyb, _ := context.GetRawData()var m map[string]interface{}//包装为json数据 []byte_ = json.Unmarshal(b, &m)context.JSON(http.StatusOK, m)})

六、如何接收表单值

   //表单ginServer.POST("/user/add", func(context *gin.Context) {username := context.PostForm("username")password := context.PostForm("password")context.JSON(http.StatusOK, gin.H{"msg":      "ok","username": username,"password": password,})})

三、四、六的前端页面

七、路由重定向、404和路由组

   //路由ginServer.GET("/tests", func(context *gin.Context) {//重定向context.Redirect(http.StatusMovedPermanently, "/index")})//404 notRouteginServer.NoRoute(func(context *gin.Context) {//404context.HTML(http.StatusOK, "index.html", nil)})//路由组userGroup := ginServer.Group("/user"){userGroup.GET("/add")userGroup.POST("/login")userGroup.DELETE("delete")}

八、中间件的使用(拦截器)

自行打印 仅提供思路

package mainimport ("github.com/gin-gonic/gin""log"
)
// 自定义中间件 预处理
func myHandler() gin.HandlerFunc {return func(context *gin.Context) {context.Set("userSession", "userid")//if(value){  中间件判断////}context.Next()  //通过放行context.Abort() //拦截}
}
func main() {ginServer := gin.Default() //创建一个服务//restful apiginServer.GET("/user", myHandler() ,func(context *gin.Context) {//取出中间件值userSession := context.MustGet("userSession").(string)//打印log.Println("userSession=======>", userSession)//json 格式context.JSON(200, gin.H{"msg": "这是一个Get请求"})})//创建端口就ginServer.Run(":8083")
}

九、简单观察Go的多线程

观察一下Go的速度

package mainimport ("fmt""time"
)func main() {//go的多线程-协程go printGo()for i := 0; i < 1000; i++ {fmt.Println("main=>", i)}time.Sleep(time.Second * 3)  //主线程快结束时休息三秒
}func printGo() {for i := 0; i < 1000; i++ {fmt.Println("printGo====>", i)}
}

Gin的初步了解,有其他语言基础的同学,了解玩这些就可以做一些简单的web小网站了 后续还会有其他知识的补充

http://www.yayakq.cn/news/32054/

相关文章:

  • 佳木斯哈尔滨网站建设如何设计一个有趣的网页
  • 坪山网站建设代理商软件技术专升本考什么
  • 网站 dns 解析 手机访问设置网站是做排行榜
  • 网站建设步骤 优帮云网页界面图
  • 教程网站建设做风帆网站需要多少钱
  • 公司建设网站的可行性分析市场调研报告怎么写的
  • 网站建设最新活动网站开发常用开发语言
  • iis编辑网站绑定招聘网站怎么做市场
  • 网站改版方案ppt影视传媒广告公司网站模板
  • 大型网站的例子在哪个网站可以学做甜点
  • 现在建网站赚钱吗网站如何注销
  • 浙江省建设业协会网站wordpress主题修改软件
  • 网站建设摊销wordpress 网络验证
  • 长沙机械网站建设网站后台如何修改密码
  • 建站合同模板网站建设的费用报价
  • 外贸家具网站首页设计html个人主页源代码
  • 诗人做的网站wordpress apache
  • 门头沟网站建设长春网站建设公司哪个好
  • 深圳如何优化网站华为开发者联盟
  • 免费发布信息网站大全注册杭州做邮票的公司网站
  • 中国建设银行企业网站首页广东水利建设与管理信息网站
  • 手机笑话网站模板做网站设计注意什么细节
  • 泉州网站建设报价网站建设与管理的条件
  • 做门户网站的思路成都住房和城乡建设官网
  • 一级做爰片c视频网站wordpress带手机端
  • metro 导航网站个人 可以做网站备案吗
  • 临泽县建设局网站网络营销上市公司
  • 数据库如何导入wordpress绵阳网站搜索优化
  • 网站开发入门ppt网络品牌营销
  • 天河网站 建设seo信科分公司网站平台搭建