参考文档

Gin:   https://gin-gonic.com/zh-cn/docs/quickstart/
net/http: https://pkg.go.dev/net/http

代码分析

package main

import (
"fmt"
"time" // 时间包
"net/http" // 提供了HTTP客户端和服务端的实现 "github.com/gin-gonic/gin" // gin框架
) func main() {
// 返回Gin的`type Engine struct{}`,里面包含RouterGroup,
// 相当于创建一个路由Handlers, 可以后期绑定各类的路由规则和函数/中间件等
router := gin.Default() // 创建不同的HTTP方法绑定到Handlers中,支持POST/PUT等常用Restful方法
// gin.Context: Context是gin中的上下文,允许我们在中间件之间传递变量
// 管理流、验证JSON请求、响应json请求等,在gin中包含大量Context的方法
// 例如常用的DefaultQuery、Query、DefaultPostForm、PostForm等
router.GET("/test", func(c *gin.Context) {
// 响应json格式类型
// gin.H{}就是一个map[string]interface{}
c.JSON(200, gin.H{
"message": "test",
})
}) s := &http.Server{
Addr: ":8080",
Handler: router,
ReadTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()
}

&http.Server 和 ListenAndServe

# http.Server
type Server struct {
Addr string //监听的TCP地址,格式为:8000 Handler Handler // http句柄,实质为ServeHTTP,用于处理程序响应HTTP请求 TLSConfig *tls.Config // 安全传输层协议(TLS)配置 ReadTimeout time.Duration // 允许读取的最大时间 ReadHeaderTimeout time.Duration // 允许读取请求头的最大时间 WriteTimeout time.Duration // 允许写入的最大时间 IdleTimeout time.Duration // 等待的最大时间 MaxHeaderBytes int // 请求头的最大字节数 ConnState func(net.Conn, ConnState) // 指定一个可选的回调函数,当客户端连接时发生变化时调用 ErrorLog *log.Logger //指定一个可选的日志记录器
...
} # ListenAndServe
func (srv *Server) ListenAndServe() error {
if srv.shuttingDown() {
return ErrServerClosed
}
addr := srv.Addr
if addr == "" {
addr = ":http"
}
ln, err := net.Listen("tcp", addr)
if err != nil {
return err
}
return srv.Serve(ln)
}
开启监听服务,监听TCP网络地址,Addr和调用调用应用程序处理连接上的请求
我们在源码中看到Addr是调用我们在&http.Server中设置的参数,因此我们在
设置时要用&,我们要改变参数的值,因为我们ListenAndServe和其他一些方法
需要用到&http.Server中的参数,他们是相互影响的。

Gin框架入门的更多相关文章

  1. GO语言GIN框架入门

    Gin框架介绍 Gin是一个用Go语言编写的web框架.它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍. 中文文档 Gin框架安装与使用 ...

  2. Go最火的Gin框架简单入门

    Gin 介绍 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务.官方地址:htt ...

  3. 01 . Go框架之Gin框架从入门到熟悉(路由和上传文件)

    Gin框架简介 Gin是使用Go/Golang语言实现的HTTP Web框架, 接口简洁, 性能极高,截止1.4.0版本,包含测试代码,仅14K, 其中测试代码9K, 也就是说测试源码仅5k左右, 具 ...

  4. gin框架教程一: go框架gin的基本使用

    我们在用http的时候一般都会用一些web框架来进行开发,gin就是这样的一个框架,它有哪些特点呢 一:gin特点 1.性能优秀2.基于官方的net/http的有限封装3.方便 灵活的中间件4.数据绑 ...

  5. 在gin框架中使用JWT

    在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. 什么 ...

  6. GoWeb之gin框架

    Gin 是一个 go 写的 web 框架,具有高性能的优点.官方地址:https://github.com/gin-gonic/gin 一.快速上手 安装 go mod init go get -u ...

  7. 一步一步分析Gin框架路由源码及radix tree基数树

    Gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much ...

  8. CI框架入门1

    CI框架入门: 1.url的特点             2.目录结构/布局             3.MVC分别在哪里,如何依葫芦画瓢             4.安全性             ...

  9. 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战

    概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...

  10. 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战

    前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...

随机推荐

  1. [转帖]Web性能优化工具WebPageTest(二)——性能数据

    Web性能优化工具WebPageTest(二)--性能数据 https://www.cnblogs.com/strick/p/6681692.html 在前一篇<配置>完成后,点击&quo ...

  2. 【转帖】ChatGPT的前身:InstructGPT

    https://www.jianshu.com/p/6daf35cbc46a ChatGPT的论文目前还没有发布,在其官方博客(https://openai.com/blog/chatgpt/)中对方 ...

  3. [转帖]Armv9 架构相比 Armv8 有何升级/区别:全面性能提升

      https://baijiahao.baidu.com/s?id=1695708603852200216&wfr=spider&for=pc 自 2011 年 10 月 Arm 首 ...

  4. [转帖]一口气看完45个寄存器,CPU核心技术大揭秘

    https://www.cnblogs.com/xuanyuan/p/13850548.html 序言 前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器. ...

  5. CentOS7 上面升级git 2.24的方法

    本来想使用tar包进行安装 但是发现tar包安装时总是报错如下: [root@centos76 git-2.25.0]# make LINK git-imap-send imap-send.o: In ...

  6. Redis7.0.7的简单安装与学习

    Redis7.0.7的简单安装与学习 摘要 2022.12.18 世界杯决赛 另外是我感染奥密克戎第五天. 高烧已经没了,但是嗓子巨疼. 睡不着觉,肝胆学习一下最新的Redis7.0.7 第一部分安装 ...

  7. 如何优雅的写 css 代码

    CSS(全称 Cascading Style Sheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS 非常易于学习,但其知识点广 ...

  8. React中useEffect、useCallBack、useLayoutEffect

    在函数中使用定时器 import { useEffect, useState } from "react"; export default function Funcom() { ...

  9. PaddleNLP基于ERNIR3.0文本分类以CAIL2018-SMALL数据集罪名预测任务为例【多标签】

    相关项目链接: Paddlenlp之UIE模型实战实体抽取任务[打车数据.快递单] Paddlenlp之UIE分类模型[以情感倾向分析新闻分类为例]含智能标注方案) 应用实践:分类模型大集成者[Pad ...

  10. 基于文心大模型套件ERNIEKit实现文本匹配算法,模块化方便应用落地

    文心大模型,产业级知识增强大模型介绍 官网:https://wenxin.baidu.com/ 项目链接见文末 文心大模型开发套件ERNIEKit,面向NLP工程师,提供全流程大模型开发与部署工具集, ...