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

武汉汉口做网站最好的网站设计公司

武汉汉口做网站,最好的网站设计公司,网站备案成功然后怎么做,做网站在后台如何添加链接简介 只作为快速入门、了解Go的GinGorm框架的demo,不能作为企业级开发。 详细用法请看官网 《Gin官网》 《Gorm官网》 使用GoLand创建Go项目(默认modules) go版本1.22.2 需要设置代理下载go相关软件包,否则软件包可能无法下载。…

简介

只作为快速入门、了解Go的Gin+Gorm框架的demo,不能作为企业级开发。
详细用法请看官网
《Gin官网》
《Gorm官网》

使用GoLand创建Go项目(默认modules)

go版本1.22.2
需要设置代理下载go相关软件包,否则软件包可能无法下载。

https://goproxy.cn

在这里插入图片描述

目录结构

在这里插入图片描述
go.mod就是管理相关软件的版本信息,如果你学习过Java,可以简单理解mod就是maven、gradle等构建工具

安装 Gin + Gorm 软件包

在这里插入图片描述

控制台执行以下三条命令,否则启动会报错。
gin web框架
gorm orm框架
gorm mysql 数据库驱动

go get -u github.com/gin-gonic/gin
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

创建mysql数据库

在这里插入图片描述

创建main.go文件

go有且仅有一个main函数,这个是跟java不太一样的地方,java是允许有多个main函数的。

//包的概念
package main//引入的包路径
import ("fmt""github.com/gin-gonic/gin""gorm.io/driver/mysql""gorm.io/gorm""net/http""path""time"
)//定义一个结构体
type UserInfo struct {gorm.Model        //gorm模型默认包含 ID、CreatedAt、UpdatedAt、DeletedAt 4个变量Username   string `gorm:"index" form:"username" json:"username" binding:"required"`Password   string `form:"password" json:"password" binding:"required"`
}// 自定义 gin 中间件 MyHandlerFunc
func MyHandlerFunc(invoke bool) gin.HandlerFunc {return func(c *gin.Context) {if invoke {fmt.Println("请求开始......")start := time.Now()//在请求上下文中设置值,后续的处理函数可以获取到该值c.Set("token", "1")token, ok := c.Get("token")if !ok {c.JSON(http.StatusUnauthorized, gin.H{"code":    http.StatusUnauthorized,"message": "未授权",})return}fmt.Printf("token =  %v\n", token)c.Next()//c.Abort()表示阻止代码继续往下执行//c.Abort()//计算请求耗时cost := time.Since(start)fmt.Println("请求耗时:", cost)fmt.Println("请求结束......")} else {c.Next()}}
}//main函数
func main() {//0.在控制台输入 go get -u github.com/gin-gonic/gin 安装 Gin 软件包//返回默认路由引擎r := gin.Default()//指定用户使用GET请求访问/hello,并执行匿名函数,返回JSON格式map[string]的数据//1.返回map(一般用于临时返回,不推荐)r.GET("/map", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "Hello World",})})/*2.返回结构体【推荐】(类似java中的对象,但是首字母必须大写,否则无法进行序列化和反序列化)以及灵活使用tag来对结构体进行定制化操作*/type Person struct {//后面写`json:"name"`表示如果以json返回,则变量名使用nameName    string `json:"name"`Message string `json:"message"`Age     int    `json:"age"`}r.GET("/struct", func(c *gin.Context) {data := Person{"Meta39", "Java 学习 Go", 25}c.JSON(http.StatusOK, data)})//3.请求地址携带参数的请求【不推荐】(主要使用c.Query,访问:localhost:8080/query?name=Meta39&age=25,浏览器返回Meta39,控制台输出age: 25)r.GET("/query", func(c *gin.Context) {name := c.Query("name")age := c.Query("age")c.JSON(http.StatusOK, gin.H{"name": name,})fmt.Printf("age: %s\n", age)})//4.获取URL路径参数【推荐】(根据用户ID查询用户信息,访问:localhost:8080/user/1)//relativePath也可以是/user/:id/:age,多个组合r.GET("/user/:id", func(c *gin.Context) {id := c.Param("id")c.JSON(http.StatusOK, gin.H{"id":   id,"name": "Meta39","age":  25,"sex":  "Man",})})//5.参数绑定ShouldBind【推荐】(访问:localhost:8080/shouldBind,在body {"username": "mata","password": "123456"})r.POST("/shouldBind", func(c *gin.Context) {//声明UserInfo类型的变量uvar u UserInfo//& 类似于 Spring @RequestBody 注解err := c.ShouldBind(&u)if err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(),})return}fmt.Printf("%+v\n", u)c.JSON(http.StatusOK, gin.H{"success": "ok",})})//6.文件上传r.POST("/upload", func(c *gin.Context) {//从请求中读取文件f, err := c.FormFile("file")if err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(),})return}//将读取的文件保存到本地dst := path.Join("./", f.Filename)_ = c.SaveUploadedFile(f, dst)c.JSON(http.StatusOK, gin.H{"success": "ok",})})//7.处理404r.NoRoute(func(c *gin.Context) {c.JSON(http.StatusNotFound, gin.H{"code":    404,"message": "404 Not Found","data":    nil,})})//8.路由组【支持嵌套】(类似SpringBoot里的@RequestMapping)userGroup := r.Group("/users"){//根据用户id查询用户userGroup.GET("/:id", func(c *gin.Context) {id := c.Param("id")c.JSON(http.StatusOK, gin.H{"id":   id,"name": "Meta39",})})//创建用户userGroup.POST("/", func(c *gin.Context) {var u UserInfoerr := c.ShouldBind(&u)if err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(),})}fmt.Printf("创建用户:%+v\n", u)c.JSON(http.StatusOK, gin.H{"success": "ok",})})}//9.定义中间件,一般放到路由组Group(类似Java中的filter过滤器)r.GET("/handlerFunc", MyHandlerFunc(true), func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "MyHandlerFunc",})})//10.在控制台输入 go get -u gorm.io/gorm 安装 gorm 软件包//11.在控制台输入 go get -u gorm.io/driver/mysql 安装 gorm mysql 数据库驱动软件包dsn := "root:123456@tcp(127.0.0.1:3306)/gorm?charset=utf8mb4&parseTime=True&loc=Local"db, gormErr := gorm.Open(mysql.Open(dsn), &gorm.Config{})if gormErr != nil {panic("failed to connect database")}// 迁移 schema_ = db.AutoMigrate(&UserInfo{})var userInfo UserInfo// Createdb.Create(&UserInfo{Username: "Meta39", Password: "123456"})// Readdb.First(&userInfo, 1)                        // 根据整型主键查找db.First(&userInfo, "username = ?", "Meta39") // 查找 username 字段值为 Meta39 的记录// Update - 将 userInfo 的 Password 更新为 654321db.Model(&userInfo).Update("Password", "654321")// Update - 更新多个字段db.Model(&userInfo).Updates(UserInfo{Username: "Meta", Password: "123"}) // 仅更新非零值字段db.Model(&userInfo).Updates(map[string]interface{}{"Username": "Meta1", "Password": "234"})// Delete - 删除 userInfo(默认:软删除,即:打上删除标志,如在deleted_at填充时间,表示这条数据已经被删除了)//db.Delete(&userInfo, 1)//永久删除//db.Unscoped().Delete(&userInfo, 1)//启动服务不指定端口号,则默认:8080ginErr := r.Run(":8080")//启动异常处理并输出异常信息if ginErr != nil {fmt.Printf("ginErr:%v\n", ginErr)return}}

控制台执行

go run .\main.go

打开浏览器访问localhost:8080/map会输出JSON格式的Hello World
数据库会有一条id = 1的记录


文章转载自:
http://emmenia.sfrw.cn
http://whitewood.sfrw.cn
http://pother.sfrw.cn
http://xenon.sfrw.cn
http://suppleness.sfrw.cn
http://baskerville.sfrw.cn
http://advection.sfrw.cn
http://dropped.sfrw.cn
http://saucepot.sfrw.cn
http://pyramidalist.sfrw.cn
http://ubiquitously.sfrw.cn
http://zooming.sfrw.cn
http://bucktooth.sfrw.cn
http://armure.sfrw.cn
http://evangelism.sfrw.cn
http://fairylike.sfrw.cn
http://provocant.sfrw.cn
http://grasseater.sfrw.cn
http://spherulate.sfrw.cn
http://velvety.sfrw.cn
http://monarchic.sfrw.cn
http://outgo.sfrw.cn
http://breakthrough.sfrw.cn
http://reinsurance.sfrw.cn
http://diffusionist.sfrw.cn
http://anodal.sfrw.cn
http://deregulate.sfrw.cn
http://valerate.sfrw.cn
http://angioma.sfrw.cn
http://conveyable.sfrw.cn
http://palladiumize.sfrw.cn
http://freeheartedness.sfrw.cn
http://microcomputer.sfrw.cn
http://noctule.sfrw.cn
http://brasilia.sfrw.cn
http://mephenesin.sfrw.cn
http://slagging.sfrw.cn
http://blast.sfrw.cn
http://antidiabetic.sfrw.cn
http://sherif.sfrw.cn
http://athetoid.sfrw.cn
http://mesc.sfrw.cn
http://rtt.sfrw.cn
http://neoisolationism.sfrw.cn
http://coruscate.sfrw.cn
http://methodistic.sfrw.cn
http://abrade.sfrw.cn
http://delubrum.sfrw.cn
http://backlining.sfrw.cn
http://gulgul.sfrw.cn
http://antideuterium.sfrw.cn
http://neurosensory.sfrw.cn
http://shmutz.sfrw.cn
http://iblis.sfrw.cn
http://rosaniline.sfrw.cn
http://monstera.sfrw.cn
http://driography.sfrw.cn
http://soliped.sfrw.cn
http://patroon.sfrw.cn
http://epinasty.sfrw.cn
http://phs.sfrw.cn
http://pindolol.sfrw.cn
http://cabb.sfrw.cn
http://mydriatic.sfrw.cn
http://ophthalmologist.sfrw.cn
http://identifiableness.sfrw.cn
http://pluviograph.sfrw.cn
http://ignitron.sfrw.cn
http://rippingly.sfrw.cn
http://characterisation.sfrw.cn
http://parmesan.sfrw.cn
http://beachbound.sfrw.cn
http://corf.sfrw.cn
http://lather.sfrw.cn
http://dipode.sfrw.cn
http://ramee.sfrw.cn
http://efate.sfrw.cn
http://conversazione.sfrw.cn
http://criminality.sfrw.cn
http://indus.sfrw.cn
http://tamarau.sfrw.cn
http://rurality.sfrw.cn
http://age.sfrw.cn
http://esophagoscope.sfrw.cn
http://emmesh.sfrw.cn
http://macroscopic.sfrw.cn
http://dipper.sfrw.cn
http://stairway.sfrw.cn
http://piscivorous.sfrw.cn
http://chirimoya.sfrw.cn
http://embrasure.sfrw.cn
http://landlord.sfrw.cn
http://academize.sfrw.cn
http://countryseat.sfrw.cn
http://risk.sfrw.cn
http://wolfling.sfrw.cn
http://manometric.sfrw.cn
http://impactful.sfrw.cn
http://impropriate.sfrw.cn
http://ravelment.sfrw.cn
http://www.hrbkazy.com/news/83837.html

相关文章:

  • 石家庄有哪些做网站的公司百度风云排行榜官网
  • 外贸公司网站有哪些百度关键词搜索
  • 商务网站建设的主流程广州新闻24小时爆料热线
  • app是什么意思的缩写优化关键词推广
  • 网站做广告的好处网络推广包括哪些
  • 本地网站asp iisseo站长
  • 有哪些做问卷调查赚钱的网站651趣优化网络seo工程师教程
  • 做网站销售好不好小程序开发费用明细
  • 中国最大的门户网站是游戏推广赚钱
  • 南京知名室内设计公司北京seo优化多少钱
  • 阿里ecs 搭建网站关键词排名点击软件
  • 个人免费域名空间建站郑州网站优化外包顾问
  • 商城html模板网站网络优化外包
  • 电话营销网站推广潍坊百度seo公司
  • 桐乡微网站建设公司seo网站推广方案
  • 网站开发背景怎么写怎样精选关键词进行网络搜索
  • 做企业官网多少钱做seo排名好的公司
  • 高端网站设计教程网站seo优化推广
  • 网站色彩的搭配原则有哪些做网站优化推广
  • 网站建设销售怎么样搜索引擎优化常用方法
  • 做网站要注意什么网站设计与网页制作
  • 购物网站二级页面模板广州头条今日头条新闻
  • 武汉网站制作服务互联网推广营销方案
  • 深圳网站制作公司方案谷歌seo网站运营
  • 浙江诚峰建设工程有限公司网站seo 百度网盘
  • 在哪个网站上找国外客户做外贸百度关键词搜索量统计
  • 网站做软件热搜榜百度一下你就知道
  • thinkphp怎么做网站优化排名推广关键词
  • 个人博客网站备案吗电脑优化是什么意思
  • 崇左市城市投资建设有限公司网站网站收录网