goWeb

gorose orm+dotweb框架实现接口 -- 类似PHP的laravel

项目结构说明

因为 gorose orm 和 dotweb 框架 都是基于独立的组件, 所以我们可以对项目的目录做出自由的规划.

在这里, 我们便规划一个遵循一般的mvc结构的项目目录.

为了项目的易维护性和高可用性, 我们尽量采取成熟的架构, 分离业务模块, 这里就借鉴 php 界最火爆的框架拉 laravel 的设计思想, 做出简单的涉设计架构

目录大致如下:

路由: /router/

放置所有路由, 这里会用到dotweb的路由组件, 所有请求的入口都会经过这里

控制器: /controller/

放置所有控制器, 这里就是基本的业务逻辑处理曾

数据操作: /model/

放置所有model, 这里就是gorose orm的主战场, 所有的数据库操作都在这里完成

中间件: /middleware/

放置所有中间件, 这里可以放置各种狂拽酷炫吊炸天的组件

入口目录: /bootstrap/

系统中用到的组件, 统一在这里驱动, 便于维护管理, 本项目主要包含gorose和dotweb在这里驱动

配置目录: /config/

必须是放置所有的配置文件在这里

日志目录: /log/

这个没什么说的

成型目录结构

goWeb

bootstrap

bootDatabase.go

bootRouter.go

config

database.go

middleware

Auth.go

controller

Goods.go

model

Goods.go

router

route.go

main.go

以上各个组件, 除了model模块采用gorose的orm组件之外, 路由和部分中间件模块均由dotweb中对应的组件来完成, 这里就更能提现出组件化框架dotweb的强大之处了

路由说明

这里用到了 dotweb 的相关组件, 有 HttpServer , Context 和 cors 中间件

他们分别作用于 路由, 请求参数等相关和中间件(比如跨域) 等

Route.GET 代表该请求位 get 请求

Route.POST 代表该请求位 post 请求

Route.Group 将请求归类

Route.Group.Use 使用中间件

option 中间件初始化

cors.Middleware(option) 加载中间件option

controller.xxxxx 加载控制器的对应方法

控制器和模型说明

// 控制器

func GetGoodsById(context dotweb.Context) error {

res := model.GetGoodsById(context)

ctx.WriteJson(utils.SuccessReturn(res))

return nil

}

说明:

context 请求的内容

context.WriteJson 返回 json 格式数据

utils.SuccessReturn 工具包中封装的成功返回函数

model 引入的模型目录, 内容如下:

// 模型

func GetGoodsById(context dotweb.Context) interface{} {

res, err := bootstrap.DB.Table("goods").

Where("id", context.FormValue("id")).

First()

if err != nil {

return ""

}

return res

}

测试

启动服务

go run main.go

出现如下信息

start……,port:8099,visit:http://localhost:8099

部署上线

打包项目

go build main.go

运行项目

nohup ./main &

golang web php,GitHub - kai-xx/goWeb: golang web 接口实现 -- 类似PHP的laravel相关推荐

  1. golang 编译提示 cannot assign interface {} 和golang断言使用

    golang 编译提示 cannot assign interface {} 和golang断言使用: 从sync.Map中读取值的时候出现如下编译错误,因为返回的是interface类型,需要做转换 ...

  2. fatal: unable to access ‘https://github.com/xx/xx.git/’: Failed to connect to github.com port 443: T

    github提交代码时报错: fatal: unable to access 'https://github.com/xx/xx.git/': Failed to connect to github. ...

  3. Hexo在github上构建免费的Web应用 – 推酷

    Hexo在github上构建免费的Web应用 – 推酷. Categories: 日志

  4. YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程

    YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程 1. 直接删除 Golang 安装包: 如果是默认安装,Golang 的默认安装目录为: a. Linux.Mac O ...

  5. 【Golang第1~3章:基础】如何安装golang、第一个GO程序、golang的基础

    介绍 本人是个菜鸡,这个是在B站上看边看视频边做的笔记,这一章是编程语言的基础 有变量.常量.数据类型.指针.标识符.运算符.流程控制,具体请看[文章目录] 配套视频自己去B站里面搜[go语言],最高 ...

  6. 爱上开源之golang入门至实战-使用IDE开发Golang

    使用IDE开发Golang 上一节,使用文本编辑器,我们开启了golang之旅,除了通过文本编辑器的方式来进行程序开发,我们还可以通过使用golang的集成开发环境工具(IDE)来进行更高效率,更快速 ...

  7. svn 合并问题 MERGE of '/svn/web': 200 OK (http://xx.xx.xx.xx)

    今天调整svn 的时候出现了一个问题,顺便记录了. Commit G:\Users\Administrator\Desktop\web\789.txt G:\Users\Administrator\D ...

  8. 初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?

    今天小编要跟大家分享的文章是关于初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?本篇文章为大家整理出来了Web前端工程师初级阶段需要掌握的内容,很全面,希望大家好好阅读,看看自己掌握 ...

  9. web编程开发_Web编程简介(Web设计和Web开发)

    web编程开发 为什么要进行网站开发? (Why web development?) The most important reason of why one should learn web dev ...

最新文章

  1. xx学OD -- 消息断点 RUN跟踪(下)
  2. [POI2007]堆积木Klo
  3. CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
  4. mybatis实现自定义SQL并且请求参数是集合
  5. PAT(乙级) 1002 写出这个数 (20point(s)) Python
  6. 信息学奥赛一本通(1263:【例9.7】友好城市)
  7. python logging 不输出控制台_Python中使用logging模块代替print(logging简明指南)
  8. 手淘移动适配方案flexible.js兼容bug处理
  9. 抖音、快手无水印视频下载【现已支持所有平台】
  10. 阿里云短信接口写法参照实例
  11. TP笔记5、模型 文件上传 分页 会话技术与验证码
  12. Android 拍摄(横\竖屏)视频的懒人之路
  13. c语言负数与正数判断大小,c语言编程,输入一些整数,判断其中正数与负数的个数,并分别求出正数与负数的平均值...
  14. 我的AI转型之路与AI之我见
  15. 说说qwerty、dvorak、colemak三种键盘布局
  16. 优美抒情钢琴曲《kiss the rain》-这一刻 让我们静静聆听
  17. 关于FIN_WAIT2
  18. 《夜宴》Vs《黄金甲》之8大PK看点及冲奥预测
  19. OSI模型与TCP/IP协议族
  20. BUUCTF misc 专题(72)喵喵喵

热门文章

  1. JDK 12的String :: transform方法的简要但复杂的历史
  2. Spring Boot微服务,Docker和Kubernetes研讨会–第2部分
  3. 容器化Spring Data Cassandra应用程序
  4. Apache Spark中的自定义日志
  5. spring jms 消息_Spring JMS,消息自动转换,JMS模板
  6. zip和unzip上的Java要点
  7. apache wicket_Apache Wicket:记住我的功能
  8. Neo4j:特定关系与一般关系+属性
  9. JPA数据库架构生成
  10. Apache Lucene的结构