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

那个网站做玉石最专业如何建设学校的微网站首页

那个网站做玉石最专业,如何建设学校的微网站首页,企业黄页电话信息查询入口,网站设计与规划论文简介 只作为快速入门、了解Go的GinGorm框架的demo#xff0c;不能作为企业级开发。 详细用法请看官网 《Gin官网》 《Gorm官网》 使用GoLand创建Go项目#xff08;默认modules#xff09; go版本1.22.2 需要设置代理下载go相关软件包#xff0c;否则软件包可能无法下载。…简介 只作为快速入门、了解Go的GinGorm框架的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 (fmtgithub.com/gin-gonic/gingorm.io/driver/mysqlgorm.io/gormnet/httppathtime )//定义一个结构体 type UserInfo struct {gorm.Model //gorm模型默认包含 ID、CreatedAt、UpdatedAt、DeletedAt 4个变量Username string gorm:index form:username json:username binding:requiredPassword 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:nameMessage string json:messageAge 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?nameMeta39age25浏览器返回Meta39控制台输出age: 25r.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里的RequestMappinguserGroup : 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:123456tcp(127.0.0.1:3306)/gorm?charsetutf8mb4parseTimeTruelocLocaldb, 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.dnsts.com.cn/news/46672.html

相关文章:

  • 榆林网站建设熊掌号淘宝网页设计尺寸
  • 天鸿建设集团有限公司 网站广告案例的网站
  • 网站建设如何找客户制作关于灯的网站
  • 合肥家居网站建设怎么样网站采集怎么做
  • 推销网站打电话沟通做网站
  • 通信建设工程项目经理查询网站网站建设制作放之
  • 梅州建设公司网站网站代运营公司排名
  • 子网站建设工作wordpress分享跳转插件
  • 有没有如何做网站的书关于地产设计网站
  • 一起做单网站怎么样无货电商怎么入门
  • 南城网站建设公司贵阳市有翻译资质的公司
  • 房屋网站模板代理公司名字
  • 公司网站制作设计报价高唐住房建设局网站
  • 赣州做网站的公司有哪家丽水哪里有做网站的公司4000-262-
  • 网站防护空间福建seo外包
  • 海外免备案网站孝感市门户网
  • 专门做音箱的网站傻瓜式建站软件
  • 深圳珠宝品牌网站设计百度权重查询网站
  • 贵阳专业建网站鄱阳做网站
  • 合肥网站建设yjhlw东莞公司网上推广
  • 如何配置网站服务器网络营销的优化和推广方式
  • html下载网站模板网站的安全性建设
  • 如何提高网站优化婚礼视频制作软件
  • 移动端网站建设重点有哪些伍佰亿门户网站
  • php网站开发最低配置南京 网站建设模板价格
  • 网站管理员权限网站关键词全国各地的排名情况
  • 做微网站公司简介网站模版怎么用
  • 无锡哪家做网站好京东网站是谁做的
  • 做网站分为哪几个岗位广州市市场监督管理局
  • 在网站建设中 为了防止工期拖延wordpress怎样增加移动端