一小时快速上手GoWeb开发之Gin框架

news2025/1/23 6:20:08

Go是一门正在快速增长的编程语言,专为构建简单、快速且可靠的软件而设计。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。

Gin:Go 语言编写的Web框架,以更好的性能实现类似 Martini框架的API。

Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。

Beego:开源的高性能Go语言Web框架。

beego是一个快速开发Go应用的http框架,go语言方面技术大牛。beego可以用来快速开发APl、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。

Iris:全宇宙最快的Go语言Web框架。完备MVC支持,未来尽在掌握。

Iris是一个快速,简单但功能齐全的和非常有效的web框架。提供了一个优美的表现力和容易使用你的下一个网站或API的基础。

Gin安装使用 go get


go所有的安装都是使用go get,它的本质是git-clone 克隆,其实就是将远程仓库克隆到本地就可以使用了。

Gin是一个golang的微框架,封装比较优雅,API友好,源代码比较明确。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖远比Python,Java之类的要小。

自身的net/http足够简单,性能也非常不错。框架更像是一个常用函数或者工具的集合。

借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。

Gin官方文档地址:https://gin-gonic.com/zh-cn/docs/

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

开发一个网站需要什么东西?

第一个是访问地址,其次是服务器的端口,这样就可以处理我们的请求 request response,通过这两个对象来处理请求,然后给浏览器响应一些数据。

	//创建一个服务
	ginServer := gin.Default()


    //添加连接数据库的代码,就可以直接去调用数据库,然后再写逻辑就可以返回给前端

	//处理请求的代码
	ginServer.GET("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": "hello world"})
	})

	//服务器端口
	ginServer.Run(":8080")

可以看到响应了msg数据json格式。

下面是添加icon,记得换浏览器,避免缓存带来的影响。

	//创建一个服务
	ginServer := gin.Default()
	//添加icon
	ginServer.Use(favicon.New("./fav.jpg"))
	//处理请求的代码
	ginServer.GET("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": "hello world"})
	})

	//服务器端口
	ginServer.Run(":8080")

RESTful API


以前写网站 

get  /user

post  /create_user

post  /update_user

其实也就是根据不同的请求来执行不同的功能, 以前是通过url和请求来隔离。

RESTful API  最常用

get    /user

post  /user

put   /user

delete /user

同一个路径用不同的方式。

gin框架也是支持restful api的开发。所以使用go语言去开发restful api是非常简单的。

	ginServer.POST("/user")
	ginServer.PUT("/user")
	ginServer.DELETE("/user")

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/thinkerou/favicon"
)

func main() {
	fmt.Println(gin.Version)
	//创建一个服务
	ginServer := gin.Default()
	//添加icon
	ginServer.Use(favicon.New("./fav.jpg"))
	//处理请求的代码
	ginServer.GET("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": " get hello world"})
	})

	ginServer.POST("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": "post hello world"})
	})

	ginServer.PUT("/hello", func(context *gin.Context) {
		context.JSON(200, gin.H{"msg": "put hello world"})
	})

	//服务器端口
	ginServer.Run(":8080")

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【rust-grpc-proxy】在k8s中,自动注入代理到pod中,再不必为grpc调试而烦恼

目录前言原理sidecarwebhook实现安装k8s设置webhook使用尾语前言 rust-grpc-proxy 目前功能基本完善。是时候上环境开始应用了。 之前考虑是gateway模式或者sidecar模式。 思考良久之后,觉得两种模式都有使用场景,那就都支持。本次就带来sidecar模式的食…

实战小项目之视频监控(1-1)

实战小项目之视频监控(1-1) 目前常见的视频监控和视频直播都是使用了 RTMP 和 RTSP 流媒体传输协议等。 RTSP(Real-Time Stream Protocol)由 Real Networks 和 Netscape 共同提出的,基于文本的多媒体播放 控制协议。…

计算机科学导论笔记(五)

目录 七、操作系统 7.1 引言 7.1.1 操纵系统 7.1.2 自举过程 7.2 演化 7.3 组成部分 7.3.1 用户界面 7.3.2 内存管理器 7.3.3 进程管理器 7.3.4 设备管理器 7.3.5 文件管理器 7.4 操作系统 7.4.1 UNIX 7.4.2 Linux 7.4.3 Windows 七、操作系统 7.1 引言 计算机…

阿里云手机短信登录

阿里云短信服务介绍阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%&…

三维重建(单目、双目、多目、点云、SFM、SLAM)

1 相机几何与标定1.1 相机模型中的坐标系1.2 四种坐标系之间的转换1.3 相机内参1.4 相机标定2 单目三维重建2.1 NeuralRecon三维重建定义 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而…

DJ1-2 操作系统引论

目录 一、操作系统的发展过程 1. 无操作系统 2. 单道批处理系统 3. 多道批处理系统 4. 分时操作系统 5. 实时系统 二、操作系统的基本特征 1. 并发性 2. 共享性 3. 虚拟性 4. 异步性 三、操作系统的主要功能 1. 处理机管理功能 2. 存储器管理功能 3. 设备管理功…

python pca/svd原理及应用

PCA的定义主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域。它的主要作用是对高维数据进行降维。PCA把原先的n个特征用数目更少的k个特征取代,新特…

Elasticsearch使用——高级篇

1.数据聚合**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功…

【ns-3】添加nr(5G-LENA)模块

文章目录前言1. 下载5G-LENA源代码2. 配置并重新构建ns-3项目参考文献前言 本篇以ns-3.37为例介绍如何在ns-3中添加nr(5G-LENA)模块 [1]。5G-LENA是一个由Mobile Networks group CTTC(Centre Tecnolgic de Telecomunicacions de Catalunya&a…

微信小程序开发学习笔记1——安心食疗

2.1小程序代码结构 目录结构 1.小程序的目录 pages:小程序的页面 页面路径 一个小程序页面由四个文件组成,分别是: xxx.js xxx.wxml xxx.json xxx.wxss 注意:为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文…

MySQL(二)视图、锁、存储过程、触发器、锁以及常用工具

MySQL进阶视图检查选项视图的更新存储过程存储过程基本语法变量系统变量用户自定义变量局部变量if判断参数casewhile循环repeat循环loop循环cursor游标handler条件处理程序存储函数触发器锁全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁&临键锁InnoDB引擎逻辑存储结构事…

使用Arduino开发ESP32:开发环境搭建

开发环境搭建 使用Arduino开发ESP32开发环境搭建方式和用Arduino开发ESP8266相似:https://blog.csdn.net/Naisu_kun/article/details/80186950#t0 下载安装Arduino IDE: https://www.arduino.cc/en/Main/Software Arduino IDE中添加ESP32开发板数据&a…

第二道pwn题:shellcode

题目来自视频:链接:https://pan.baidu.com/s/17vX9dbfHkXBw71mcEXBgNQ?pwd6666 提取码:6666查看文件类型和保护,虽然现在的我还没有明白太多的保护。64位,放到ida里边rbp:保存的是栈中当前执行函数的基本地址。当前执…

xCAT安装指南

一、简介 xCAT使您能够轻松管理任何类型的技术计算工作负载的大量服务器。xCAT以卓越的扩展、各种支持的硬件和操作系统、虚拟化平台和完整的“day0”设置功能而闻名。 二、安装指南 免责声明 这些说明仅为指南,具体细节可能因操作系统版本而略有不同。有关最新推…

TCP与UDP

概述 传输层时向上层的应用层提供通讯服务的,是属于面向通信部份的最高层,同时也是用户功能的最底层 传输层有两个很重要的特点:复用、分用 复用:应用层所有的应用进程都可以通过运输层再传到网络层 分用:运输层从网…

【Unity】多分辨率适配

笔者按:使用Unity版本为2021.3LTS,与其他版本或有异同。请仅做参考 一、前言。 本文是笔者在学习使用Unity引擎的过程中,产学研的一个笔记。由笔者根据官方文档Unity User Manual 2021.3 (LTS)/Create user interfaces (UI)/Unity UI/UI 操作…

mingw编译opencv

我这里是msys2 这个是msys2的教程 https://blog.csdn.net/qq_39942341/article/details/105931335?ops_request_misc%257B%2522request%255Fid%2522%253A%2522167821146216800197067008%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&requ…

【LeetCode】剑指 Offer 24. 反转链表 p142 -- Java Version

题目链接:https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/submissions/ 1. 题目介绍(24. 反转链表) 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 【测试用例】: 示…

C++右值引用/移动语义

在此之前,我们所用的引用,其实都是左值引用。 int a 10; int& ra a; 下面我们来重新认识一下引用: 而何为左值?左值引用其实是什么?请往下看~ 左值是一个表示数据的表达式(如变量名或解引用的指针)&#xff…

77. writerows写入多行

文章目录1. 目标任务2. 准备工作3. writerow单行写入4. writerows多行写入5. a以追加的模式写入值6. 总结1. 目标任务 新建【各班级成绩】文件夹; 在该文件夹下新建一个【1班成绩单.csv】文件; 在该文件中写入下面的内容: 成绩 姓名 刘一…