gin框架中项目的初始化
2024-09-02 08:33:30
核心知识点
- json配置文件解析成结构体
- 将路由对应的接口抽离到单独的文件中,main函数中直接注册路由即可
项目目录图
项目代码
- app.json代码
{
"app_name": "cloudRestaurant",
"app_mode": "debug",
"app_host": "127.0.0.1",
"app_port": "8000"
}
- Config.go代码,解析配置文件到结构体
package tool
import (
"bufio"
"encoding/json"
"fmt"
"os"
)
type Config struct {
AppName string `json:"app_name"`
AppMode string `json:"app_mode"`
AppHost string `json:"app_host"`
AppPort string `json:"app_port"`
}
var _cfg Config
func ParseConfig(path string) (*Config, error) {
// 解析配置文件
file, err := os.Open(path)
if err != nil {
panic(err.Error())
}
defer file.Close()
reader := bufio.NewReader(file)
decoder := json.NewDecoder(reader)
err = decoder.Decode(&_cfg) // 注意:要将和json对应的结构体指针传进来,而不是结构体对象
if err != nil {
fmt.Println(err.Error())
return nil, err
}
return &_cfg, nil
}
- HelloController.go文件,接口写在这里面
package controller
import (
"github.com/gin-gonic/gin"
"net/http"
)
type HelloController struct {}
func (h *HelloController) Router(engine *gin.Engine) {
engine.GET("/hello", h.Hello)
engine.POST("/hello", h.HelloP)
}
func(h *HelloController) HelloP(ctx *gin.Context) {
ctx.Writer.Write([]byte("post hello"))
}
func(h *HelloController) Hello(ctx *gin.Context) {
ctx.JSON(http.StatusOK, gin.H{
"msg": "OK",
})
}
- main.go文件
package main
import (
"CloudRestaurant/controller"
"CloudRestaurant/tool"
"fmt"
"github.com/gin-gonic/gin"
)
var (
config *tool.Config
)
func init() {
// 初始化配置文件
var err error
config, err = tool.ParseConfig("./config/app.json")
if err != nil {
fmt.Println(err.Error())
}
}
func main() {
app := gin.Default()
// 注册路由
registerRouter(app)
app.Run(config.AppHost + ":" + config.AppPort)
}
// 路由设置
func registerRouter(router *gin.Engine) {
new(controller.HelloController).Router(router)
}
最新文章
- 自动生成数据库字典(sql2008)
- 解决Android studio首次启动gradle无法下载jar包
- bind搭建(二)反向解析
- (求助大牛)关于vs2010上的AVS代码bug问题~~
- Spring MVC PageNotFound.noHandlerFound No mapping found for HTTP request with URI
- bzoj2741(分块+可持久化Trie)
- 京东金融集团BD部门招聘 BD经理
- jsp与servlet联合处理
- IntelliJ IDEA 2017.3.1安装步骤
- GET vs. POST
- Codeforces 570E - Pig and Palindromes - [滚动优化DP]
- spring cloud/spring boot同时支持http和https访问
- Linux按照时间顺序列出文件
- mongodb 如何删除 字段值为 json对象中的某个字段值
- Java入门:练习——自定义通用工具类
- FireDAC 汉字字段名称过滤
- js基础(闭包实例)
- cmd连接mysql操作命令
- Xcode9出现错误safe area layout guide before ios 9 真正解决办法
- QPS、PV和需要部署机器数量计算公式
热门文章
- Centos 查询端口被占用命令
- Linux(Centos)配置vsftp使用账号密码(虚拟用户)登录ftp进行文件上传和修改
- 【LeetCode】42. Trapping Rain Water 接雨水 (C++)
- 【LeetCode】109. Convert Sorted List to Binary Search Tree 解题报告(Python)
- 【授课录屏】JavaScript高级(IIFE、js中的作用域、闭包、回调函数和递归等)、MySQL入门(单表查询和多表联查)、React(hooks、json-server等) 【可以收藏】
- MySQL 的性能
- eclipse的安装及最大子数组求和
- CycleGAN
- MQ消费失败,自动重试思路
- 编写Java程序,使用JTable表格组件展现人员信息列表