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

则么建立自己的网站nginx反代wordpress伪静态

则么建立自己的网站,nginx反代wordpress伪静态,做外贸在什么网站最好,企业官方网站地址怎么填目录 项目介绍 简介 技术 项目结构 项目分析 总结 项目介绍 简介 项目地址#xff1a;knoci/list: 基于Gin的待办清单小项目 (github.com) 一个仿照github/Q1mi/bubble 做的一个gin框架练习 技术 gin 框架gorm 操作PostgreSQLini 配置文件 项目结构 list ├── R…目录 项目介绍 简介 技术 项目结构 项目分析 总结  项目介绍 简介 项目地址knoci/list: 基于Gin的待办清单小项目 (github.com) 一个仿照github/Q1mi/bubble 做的一个gin框架练习 技术 gin 框架gorm 操作PostgreSQLini 配置文件 项目结构 list ├── README.md ├── config │ └── config.ini ├── controller │ └── controller.go ├── dao │ └── postgresql.go ├── go.mod ├── go.sum ├── main.go ├── models │ └── todo.go ├── routers │ └── routers.go ├── static │ ├── css │ │ ├── app.8eeeaf31.css │ │ └── chunk-vendors.57db8905.css │ ├── fonts │ │ ├── element-icons.535877f5.woff │ │ └── element-icons.732389de.ttf │ └── js │ ├── app.007f9690.js │ └── chunk-vendors.ddcb6f91.js └── templates├── favicon.ico└── index.html 项目分析 项目中有configcontrollersdaomodelsroutersstatictemplate这7个文件夹。 config保存ini文件配置连接数据库的参数(Port,User,Password...)controllers保存控制函数实现器功能处理web响应dao连接数据库models是各种数据结构模板定义routers负责路由分组和路由处理static存储静态资源template是前端模板 接下来我们从mian.go开始逐步分析整个项目的运行。 package mainimport (list/daolist/modelslist/routers//_ gorm.io/driver/mysql_ gorm.io/driver/postgres )func main() {//连接数据库dao.Connect()//模型绑定dao.DB.AutoMigrate(models.Todo{})//启动routerrouters.SetupRouter() }在main.go中我们导入了同文件夹下的daomodelsrouters随后运行第一个函数 dao.Connect()接下来我们进入dao来看看 dao.Connect() 函数实现了什么功能。 package daoimport (fmtgopkg.in/ini.v1//gorm.io/driver/mysqlgorm.io/driver/postgresgorm.io/gorm )var (DB *gorm.DB )type MysqlConfig struct {User string ini:userPassword string ini:passwordHost string ini:hostPort string ini:portDBname string ini:db }func LoadConfig() *MysqlConfig {//development_通过结构体映射参数c : new(MysqlConfig)ini.MapTo(c, config/config.ini)fmt.Println(c)return c }func Connect() {c : LoadConfig()dsn : fmt.Sprintf(host%s user%s password%s dbname%s port%s, c.Host, c.User, c.Password, c.DBname, c.Port)/* mysqldsn : fmt.Sprintf(%s:%stcp(%s:%s)/%s?charsetutf8mb4parseTimeTruelocLocal,c.User, c.Password, c.Host, c.Port, c.DBname)dsn : root:root1234tcp(127.0.0.1:13306)/bubble?charsetutf8mb4parseTimeTruelocLocal*/var err errorDB, err gorm.Open(postgres.Open(dsn), gorm.Config{}) // connect// mysql DB, err gorm.Open(mysql.Open(dsn), gorm.Config{})if err ! nil {panic(err.Error())}fmt.Print(连接数据库成功\n) } 在postgresql.go中导入了GORMPG驱动ini包自定义了结构体Mysqlconfig和一个 导包全局可访问的 gorm.DB类型的指针DB封装了一个函数 LoadConfig() 通过ini.MapTo(c, config/config.ini) 来接收配置文件。 在Connect函数中调用LoadConfig()获得配置用Sprintf()把配置复制到dsn,然后通过gorm.Open方法连接到我们的数据库。 dao.Connect()完成后我们继续回到main.go用dao包内变量DB的内置方法 dao.DB.AutoMigrate(models.Todo{}) 实现了模型绑定实际上就是按照models.Todo结构体在数据库中创建了一张表。 package modelstype Todo struct {ID int json:idTitle string json:titleStatus bool json:status } Todo表中每个待办事项有IDTitleStatus并且有相应JOSN的tag。其中ID是用来标识事项的自增唯一值Title是事务名Status用0和1表示未完成和完成。 回到main.go最后调用了routers.SetupRouter()这是在本地routers包routers.go里的函数。在SetupRouter中使用gin.Default()注册默认路由r然后用r.Static()导入./static目录下静态文件指定为static接着用r.LoadHTMLGlob()导入当前路径template/*的模板。 接着就是路由处理指定了对/的GET请求回应controllers.ShowIndex函数用r.Group()定义了路由组v1Group。 路由组中指定了对todo的POST请求回应controllers.CreateTodo函数对/todo的GET请求回应controllers.RetrieveTodo函数对/todo/:id的PUT请求回应controllers.UpdateTodo函数对/todo/:id的DELETE请求回应controllers.DeleteTodo函数。 最后用r.Run(:9090)在9090端口上监听并运行。 package routersimport (github.com/gin-gonic/ginlist/controllers )func SetupRouter() {r : gin.Default()r.Static(/static, static)r.LoadHTMLGlob(template/*)r.GET(/, controllers.ShowIndex)v1Group : r.Group(v1){//添加v1Group.POST(todo, controllers.CreateTodo)//查看v1Group.GET(/todo, controllers.RetrieveTodo)//修改v1Group.PUT(/todo/:id, controllers.UpdateTodo)//删除v1Group.DELETE(/todo/:id, controllers.DeleteTodo)}r.Run(:9090)} 接下来看看controller中的各个函数的功能首先是ShowIndex负责返回状态码200展示index.html。 func ShowIndex(c *gin.Context) {c.HTML(http.StatusOK, index.html, nil) } CreateTodo 用来创建一个待办事项。在接收到传来的数据后定义一个models.Todo类型的todo结构体然后用 c.ShouldBind(todo) 自动的进行响应格式(这里是JSON)的参数绑定到todo然后通过 dao.DB.Create(todo) 把todo存入数据库DB以JSON格式失败返回报错成功返回todo。 func CreateTodo(c *gin.Context) {//get datavar todo models.Todoc.ShouldBind(todo)//add into databaseerr : dao.DB.Create(todo).Error//returnif err ! nil {c.JSON(http.StatusBadRequest, gin.H{error: err.Error()})return} else {c.JSON(http.StatusOK, todo)}} RetrieveTodo 用来获取所有待办事项创建一个结构体数组todos用 dao.DB.Find(todos) 把所有的表数据给到todos以JSON格式失败返回报错成功返回todos。 func RetrieveTodo(c *gin.Context) {var todos []models.Todoif err : dao.DB.Find(todos).Error; err ! nil {c.JSON(http.StatusOK, gin.H{error: err.Error()})return} else {c.JSON(http.StatusOK, todos)} } UpdateTodo 用来更新指定的事项用 c.Params.GET(id) 获得要修改事项名为id的指定url定义todo结构体然后用 dao.DB.Where(id?, id).First(todo) 来查询数据库中第一个对应id的数据到todo然后 c.BindJSON(todo) 把方法请求体c以JSON绑定到todo最后 dao.DB.Save(todo) 来更新数据库。 func UpdateTodo(c *gin.Context) {id, ok : c.Params.Get(id)if !ok {c.JSON(http.StatusOK, gin.H{error: id invalid})return}var todo models.Todoif err : dao.DB.Where(id?, id).First(todo).Error; err ! nil {c.JSON(http.StatusOK, gin.H{error: err.Error()})return}c.BindJSON(todo) //修改if err : dao.DB.Save(todo).Error; err ! nil {c.JSON(http.StatusOK, gin.H{error: err.Error()})} else {c.JSON(http.StatusOK, todo)} } DeletTodo 用来删除一个待办事项还是通过 c.Params.GET(id) 获得要修改事项名为id的指定url用 dao.DB.Where(id?, id).Delete(models.Todo{}) 来删除数据库中对应id的数据因为这里不接收请求体没有定义局部变量结构体所以直接传入model.Todo{}指定表格式。 总结  这个项目是Gin和GORM的非常非常简单的小项目适合新手入门。
http://www.w-s-a.com/news/482755/

相关文章:

  • 庆阳手机网站设计兰州网站的优化
  • 企业网站托管有必要吗项目管理资格证书
  • 检索类的网站建设个人博客网页模板图片
  • 贵阳网站建设搜q479185700做网站有什么语言好
  • 制作公司主页网站贵阳网站建设技术托管
  • 广西建设网站网址多少钱南京江北新区地图
  • 网站建设及优化 赣icp外包服务美剧
  • wordpress添加菜单深圳优化网站排名
  • 免费下载建设银行官方网站重点专业建设验收网站
  • 建行官方网站登录怎样制作悬浮的WordPress
  • 建设一个网站需要几个角色广告设计与制作就业前景
  • 侵入别人的网站怎么做怎么修改网站排版
  • 网站如何提交百度收录什么最便宜网站建设
  • 商丘网站建设想象力网络做公司网站需要准备什么
  • 滁州新手跨境电商建站哪家好网站推广运作怎么做
  • 烟台有没有做网站大连建设工程信息网专家库
  • 网站建设明确细节商贸有限公司的经营范围
  • 南宁微网站开发做的好的有哪些网站
  • 好的素材下载网站读书网网站建设策划书
  • 东莞南城网站建设wordpress用户投稿插件
  • 开个网站做代理赚钱吗沽源网站建设
  • 做卖车网站需要什么手续wordpress 主题 demo
  • 上海外贸网站开发公司建设内容
  • 网站制作品牌公司网站的字体颜色
  • 外贸wordpress模板常德seo快速排名
  • 网站后台认证码专门做网页的网站
  • 宁波企业品牌网站建设物流公司招聘
  • 北京机建网站做网站用angular
  • 攀枝花市网站建设outlook企业邮箱注册申请
  • 企业网站建设报价单免费劳务网站建设