Go学习【02】:理解Gin,搭一个web demo

Go Gin 框架

说Gin是一个框架,不如说Gin是一个类库或者工具库,其包含了可以组成框架的组件。这样会更好理解一点。

举个🌰

  • 端口监听
  • 用于监听请求,也就是服务
  • 请求处理
  • 请求分发
  • 结果处理
  • 路由
  • 路由编写
  • 路由接入
  • 业务处理
  • 写一个demo

好,开搞!

前提
* 你已经安装好go环境,没安装的可以百度下,教程很多
* 你已经安装了Gin,如果没安装,安装命令:go get -u github.com/gin-gonic/gin
// Github上有https://github.com/gin-gonic/gin,大牛直接看这个不用看下面的了
* 建一个项目文件夹 gogo
* 初始化环境go  mod init 模块名或者项目名
// 比如我把这个测试项目取名为 gogo ; go  mod init gogo

端口监听: 主要是监听端口的消息,提供服务入口。

文件位置:~/gogo/server.go

package main
import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main()  {
    server := gin.Default()
    server.GET("/", func(c *gin.Context) {
        param := c.DefaultQuery("name", "Guest")  //注意:gin.Context 、参数获取
        c.JSON(http.StatusOK, gin.H{
            "message": "hello 测试通过",
            "data":param,
        })
    })
    server.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

{
  code: 200,
  data: [ ],
  message: "请求成功"
}

例子:

gogo/app/routes/api.go增加路由

// exp: get 、 param
e.GET("/get", distribute.Handle(test.TestGet))

gogo/app/http/test.go增加业务代码

func (r *TestController) TestGet(request *distribute.AppReqest) {
        var data = []string{}
        var name = request.InputGet("name")
        data = append(data,name)
        request.Success(data);
}

`go
http://127.0.0.1:8080/get?name=Lucy

Original: https://www.cnblogs.com/lpit/p/15325675.html
Author: 飞翔风筝
Title: Go学习【02】:理解Gin,搭一个web demo

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/516582/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • go语言 函数return值的几种情况

    分三种情况 (以下 “指定返回值”这句话, 仅指return后面直接跟着的返回值) 退出执行,不指定返回值 *(1) 函数没有返回值 package mai…

    Go语言 2023年5月29日
    079
  • 许式伟:Go+ 演进之路

    7 月 10 日,一年一度的 ECUG Con 2022 在线上圆满举行。许式伟作为七牛云 CEO、ECUG 社区发起人、Go+ 语言发明人,为大家来带了《Go+ 演进之路》的主题…

    Go语言 2023年5月25日
    090
  • Go语言之高级篇beego框架之layui框架应用

    1、layui前端框架 参考地址:https://www.layui.com Original: https://www.cnblogs.com/nulige/p/10396542…

    Go语言 2023年5月29日
    056
  • 【golang】多个defer的执行顺序以及其相关练习

    前言 做了几道关于defer的测试题,吓了一大跳,感觉自己之前的理解有些问题,所以写下这篇博客,加深下印象。 正文: 多个defer的执行顺序: 先进后出,类似于栈的特性。 下面我…

    Go语言 2023年5月25日
    053
  • go微服务框架Kratos笔记(四)使用nacos作为远端配置中心

    初识nacos nacos是阿里开源的一款用于动态服务发现、配置管理和服务管理的平台。 官方介绍,Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特…

    Go语言 2023年5月25日
    085
  • Excelize 2.5.0 正式发布,这些新增功能值得关注

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Mic…

    Go语言 2023年5月25日
    068
  • Go语言实现文本文件拷贝

    文本文件的读写是程序的常见操作。 这个程序的功能实现文件的拷贝操作,包括了文件的打开、关闭和读写。该程序是按行读入数据文件的内容,然后将其写入到另外一个文件中。 Go语言程序: /…

    Go语言 2023年5月29日
    059
  • 基于LSM的Key-Value数据库实现稀疏索引篇

    上篇文章简单的填了一个坑基于LSM数据库的实现了WAL,在该版本中如数据写入到内存表的同时将未持久化的数据写入到WAL文件,在未将数据持久化时程序崩溃,可通过WAL文件将数据还原恢…

    Go语言 2023年5月25日
    082
  • 浅谈MatrixOne如何用Go语言设计与实现高性能哈希表

    目录 MatrixOne数据库是什么? 哈希表数据结构基础 哈希表基本设计与对性能的影响 碰撞处理 链地址法 开放寻址法 Max load factor Growth factor…

    Go语言 2023年5月25日
    059
  • Go语言之Goroutine与信道、异常处理

    一、Goroutine Go 协程可以看做成一个轻量级的线程,Go 协程相比于线程的优势: Goroutine 的成本更低大小只有 2 kb 左右,线程有几个兆。 Goroutin…

    Go语言 2023年5月25日
    065
  • 使用go语言遇到的一些问题记录

    一、参数校验问题 使用go做web服务时,经常需要对请求参数进行校验,有些必填参数需要校验是否为空。 经常会遇到参数a为int类型,但是其值取值范围为0-xxx。0也是有意义的。 …

    Go语言 2023年5月29日
    065
  • 系统调用跟踪——分析(一)

    通过strace工具可跟踪用户进程与Linux内核的调用交互,可看到其中的System Call(系统调用)情况; 安装strace&a…

    Go语言 2023年5月25日
    095
  • Go语言基础笔记

    Go语言基础语法:https://note.youdao.com/noteshare?id=12098a23b490260282f6b7c347ab182f Go语言内建容器:ht…

    Go语言 2023年5月29日
    084
  • 服务注册与发现的原理和实现

    什么是服务注册发现? 对于搞微服务的同学来说,服务注册、服务发现的概念应该不会太陌生。 简单来说,当服务A需要依赖服务B时,我们就需要告诉服务A,哪里可以调用到服务B,这就是服务注…

    Go语言 2023年5月25日
    060
  • 将百度万年历存入自己的数据库

    前言 最近有需要研究阴历和阳历互相转换的问题。因此找到两个库carbon和solarlunar但是感觉计算出来的总是不太放心,而且也会占用计算资源。我的想法是通过接口获取现成的阴历…

    Go语言 2023年5月25日
    068
  • Go语言 异常panic和恢复recover用法

    背景:Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会…

    Go语言 2023年5月29日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球