快速开始-项目启动 - GoFrame (ZH)-Latest - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架


本站和网页 https://goframe.org/pages/viewpage.action?pageId=57183742 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

快速开始-项目启动 - GoFrame (ZH)-Latest - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架
Skip to content
Skip to breadcrumbs
Skip to header menu
Skip to action menu
Skip to quick search
GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架
Spaces
Hit enter to search
Help
Online Help
Keyboard Shortcuts
Feed Builder
What’s new
Available Gadgets
About Confluence
Log in
Sign up
GoFrame (ZH)-LatestBlogSpace shortcuts快速开始历史版本文档GoFrame FAQGoFrame MeetupGoFrame社区团队GoFrame社区投稿文档小助手(向导)Page tree
Browse pagesConfigureSpace tools
Attachments (4)
Page History
People who can view
Page Information
Resolved comments
View in Hierarchy
View Source
Export to PDF
Export to Word
Pages
框架介绍
快速开始
Skip to end of banner
Jira links
Go to start of banner
快速开始-项目启动
Skip to end of metadata
Created by 郭强, last modified on Aug 23, 2022
Go to start of metadata
工程结构请先了解下项目目录中各个目录的职责及作用:工程目录设计程序启动main.go所有的程序入口都是由main.go进入,该文件主要是调用internal/cmd包的对应命令引导程序启动。在项目模板中,默认会执行internal/cmd包的Main对象Run命令引导程序启动。 框架的核心组件均需要传递context上下文参数,这里使用gctx.New表示创建一个带链路跟踪特性的context上下文对象给下游链路。引导启动Main对象的Run命令的主要作用是做引导启动,将一些动态初始化的逻辑放到Main的Run方法中。在项目模板中,默认创建一个HTTP Server,然后通过分组路由的方式注册路由,并启动HTTP Server。随后HTTP Server将会阻塞运行,直至程序退出。 框架的命令行管理默认采用了结构化的对象管理方式,详细介绍感兴趣请参考章节:命令管理路由注册在项目模板中使用了Group方法创建了分组路由,框架的HTTP Server支持多种路由注册方式,而分组路由也是最常见的路由注册方式。
s := g.Server()
s.Group("/", func(group *ghttp.RouterGroup) {
group.Middleware(ghttp.MiddlewareHandlerResponse)
group.Bind(
controller.Hello,
})
在分组路由的闭包方法内部,通过Middleware方法注册了一个中间件,该中间件是HTTP Server组件用于规范化路由的数据返回。随后通过Bind方法的规范化路由方式绑定一个Hello路由对象,该路由对象下的所有公开方法均会被自动注册会路由。 详细的HTTP Server路由介绍请参考章节:路由管理路由对象在项目模板中的路由对象Hello只有一个路由Hello,仅用于模板示例作用。关于内部路由结构体的命名比较随意,大多数场景下我们简单地带了一个小写的前缀c表示controller的缩写。Hello方法对应的路由信息是定义到HelloReq输入参数对象中的,该对象的数据结构定义如下: 这种通过统一的中间件返回统一的数据结构,统一路由对象的方法管理路由的方式,叫做规范路由。更详细的介绍请参考章节:路由注册-规范路由 。阻塞运行通过HTTP Server的Run方法启动HTTP Server,随后HTTP Server将会阻塞运行接收客户端请求,并监听进程信号,用于HTTP Server重启/关闭。继续了解GoFrame框架的HTTP Server带有非常多的特性,具体请参考章节:WEB服务开发
Content Menu
No labels
7 Comments
秦海龙
文档更新的很频繁呀
Permalink
Aug 22, 2022
陈文俊
真正的快速开始,再也不用找半天项目启动在哪写了
Permalink
Aug 23, 2022
eagle
@郭强,目前使用的gin,看到goframe框架比较齐全,想试用一下!现在了解中,有一个地方,比较迷糊,为什么中间加一层cmd,我们目前的直接是在main.go中注册数据库、缓存、日志初始化,然后再加载router,启动server,现在中间加一层cmd有什么特殊的意义吗?没有看明白。
Permalink
Sep 09, 2022
小鹿
我觉得这个类似于路由前缀的想法,
Permalink
Sep 19, 2022
赵登睿
我觉得是为了隐藏实现细节和接收外部参数。
Permalink
Dec 04, 2022
admin888
cmd层是所有编译后生成的命令入口,里面只包含启动的入口比如prometheus中cmd,nsq中的cmd入口
Permalink
Feb 11, 2023
GuoLiangJun
@郭强 新手请教下大佬,在写路由对象方法Hello的时候,为什么要将入参的请求参数和返回参数声明成指针的形式,一般的形式不可以吗
Permalink
Dec 27, 2022
Overview
Content Tools
Powered by a free Atlassian Confluence Open Source Project License granted to GoFrame. Evaluate Confluence today.
Powered by Atlassian Confluence 7.13.0
Printed by Atlassian Confluence 7.13.0
Report a bug
Atlassian News
Atlassian
{"serverDuration": 110, "requestCorrelationId": "c6d51b7f61e518b4"}