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

京东优惠券网站怎么做拉新推广怎么找渠道

京东优惠券网站怎么做,拉新推广怎么找渠道,个人电脑做网站违法吗,企业网站管理系统cms简介 只作为快速入门、了解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://www.mnyf.cn/news/13528.html

相关文章:

  • 网站怎么做成中英文版合肥头条今日头条新闻最新消息
  • 新手学做网站 pdf 下载泰州网站优化公司
  • 商场设计理念盐城seo网站优化软件
  • 临清网站制作公司百度快速优化排名软件
  • 怎样创建设计公司网站品牌战略
  • 地推任务网windows优化大师要钱
  • 网上做网站赚钱吗百度推广登录官网入口
  • 建设校园网站自己如何免费做网站
  • 广州专业网站制作公司厦门百度seo公司
  • 扬中网站推广价格windows优化大师免费版
  • 做网站怎么还用身份证危机公关处理
  • 学做网站教学百度网盘设计外包网站
  • 博山专业网站优化哪家好百度小程序优化排名
  • 企业网站可以做淘宝客吗 今日头条
  • 深圳最新疫情政策seopc流量排行榜企业
  • 哈尔滨网页设计师深圳关键词优化报价
  • 青海省公路建设管理局网站赣州seo外包怎么收费
  • 做网站注册页面搜索引擎的网站
  • 上海网站建设公司怎么分辨好坏小吃培训去哪里学最好
  • 怎么用手机黑网站建网站怎么赚钱
  • 做行程的网站怎么找拉新推广平台
  • 中山市智能h5网站建设公司营销中存在的问题及对策
  • 石家庄网站制作找谁网络促销
  • 程序员做的简单的网站自媒体营销
  • 用js做的网站代码吗龙岗网站制作
  • wordpress博客主题汉化seo指的是搜索引擎
  • 如何建多语言网站最新热搜新闻事件
  • 没网站怎么做app西安霸屏推广
  • 新闻类的网站如何做优化、百度pc端首页
  • 建网站做cpa新站优化案例