golang web php,GitHub - kai-xx/goWeb: golang web 接口实现 -- 类似PHP的laravel
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相关推荐
- golang 编译提示 cannot assign interface {} 和golang断言使用
golang 编译提示 cannot assign interface {} 和golang断言使用: 从sync.Map中读取值的时候出现如下编译错误,因为返回的是interface类型,需要做转换 ...
- 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. ...
- Hexo在github上构建免费的Web应用 – 推酷
Hexo在github上构建免费的Web应用 – 推酷. Categories: 日志
- YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程
YDOOK :Golang 各大操作系统 完全卸载删除 golang 的方法教程 1. 直接删除 Golang 安装包: 如果是默认安装,Golang 的默认安装目录为: a. Linux.Mac O ...
- 【Golang第1~3章:基础】如何安装golang、第一个GO程序、golang的基础
介绍 本人是个菜鸡,这个是在B站上看边看视频边做的笔记,这一章是编程语言的基础 有变量.常量.数据类型.指针.标识符.运算符.流程控制,具体请看[文章目录] 配套视频自己去B站里面搜[go语言],最高 ...
- 爱上开源之golang入门至实战-使用IDE开发Golang
使用IDE开发Golang 上一节,使用文本编辑器,我们开启了golang之旅,除了通过文本编辑器的方式来进行程序开发,我们还可以通过使用golang的集成开发环境工具(IDE)来进行更高效率,更快速 ...
- 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 ...
- 初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?
今天小编要跟大家分享的文章是关于初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?本篇文章为大家整理出来了Web前端工程师初级阶段需要掌握的内容,很全面,希望大家好好阅读,看看自己掌握 ...
- web编程开发_Web编程简介(Web设计和Web开发)
web编程开发 为什么要进行网站开发? (Why web development?) The most important reason of why one should learn web dev ...
最新文章
- xx学OD -- 消息断点 RUN跟踪(下)
- [POI2007]堆积木Klo
- CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
- mybatis实现自定义SQL并且请求参数是集合
- PAT(乙级) 1002 写出这个数 (20point(s)) Python
- 信息学奥赛一本通(1263:【例9.7】友好城市)
- python logging 不输出控制台_Python中使用logging模块代替print(logging简明指南)
- 手淘移动适配方案flexible.js兼容bug处理
- 抖音、快手无水印视频下载【现已支持所有平台】
- 阿里云短信接口写法参照实例
- TP笔记5、模型 文件上传 分页 会话技术与验证码
- Android 拍摄(横\竖屏)视频的懒人之路
- c语言负数与正数判断大小,c语言编程,输入一些整数,判断其中正数与负数的个数,并分别求出正数与负数的平均值...
- 我的AI转型之路与AI之我见
- 说说qwerty、dvorak、colemak三种键盘布局
- 优美抒情钢琴曲《kiss the rain》-这一刻 让我们静静聆听
- 关于FIN_WAIT2
- 《夜宴》Vs《黄金甲》之8大PK看点及冲奥预测
- OSI模型与TCP/IP协议族
- BUUCTF misc 专题(72)喵喵喵