bee工具的使用及创建第一个项目

news2024/11/15 8:41:14

前提文章:beego的安装及配置参数说明-CSDN博客

提示:beego框架下项目需要再GOPATH/src下进行开发,我的GOPATH是C:\Users\leell\go

web项目创建

通过 bee new 创建web项目

C:\Users\leell\go\src>bee new beego-web
2024/01/15 21:40:04.553 [D]  init global config instance failed. If you do not use this, just ignore it.  open conf/app.conf: The system cannot find the path specified.
2024/01/15 21:40:04 INFO     ▶ 0001 Generate new project support go modules.
2024/01/15 21:40:04 INFO     ▶ 0002 Creating application...
        create   C:\Users\leell\go\src\beego-web\go.mod
        create   C:\Users\leell\go\src\beego-web\
        create   C:\Users\leell\go\src\beego-web\conf\
        create   C:\Users\leell\go\src\beego-web\controllers\
        create   C:\Users\leell\go\src\beego-web\models\
        create   C:\Users\leell\go\src\beego-web\routers\
        create   C:\Users\leell\go\src\beego-web\tests\
        create   C:\Users\leell\go\src\beego-web\static\
        create   C:\Users\leell\go\src\beego-web\static\js\
        create   C:\Users\leell\go\src\beego-web\static\css\
        create   C:\Users\leell\go\src\beego-web\static\img\
        create   C:\Users\leell\go\src\beego-web\views\
        create   C:\Users\leell\go\src\beego-web\conf\app.conf
        create   C:\Users\leell\go\src\beego-web\controllers\default.go
        create   C:\Users\leell\go\src\beego-web\views\index.tpl
        create   C:\Users\leell\go\src\beego-web\routers\router.go
        create   C:\Users\leell\go\src\beego-web\tests\default_test.go
        create   C:\Users\leell\go\src\beego-web\main.go
2024/01/15 21:40:04 SUCCESS  ▶ 0003 New application successfully created!

beego-web 文件结构:

beego-web
├── conf
│   └── app.conf
├── controllers
│   └── default.go
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
├── tests
│   └── default_test.go
└── views
    └── index.tpl

app.conf : 配置文件

controllers:请求分发控制器

routers: 路由

static: css、img、js等配置文件

tests: 测试程序

views:页面

启动beego-web web服务

C:\Users\leell\go\src\beego-web>go mod init beego-web
go: C:\Users\leell\go\src\beego-web\go.mod already exists

C:\Users\leell\go\src\beego-web>go mod tidy
go: finding module for package github.com/kr/text
go: found github.com/kr/text in github.com/kr/text v0.2.0

C:\Users\leell\go\src\beego-web>bee run
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v2.1.0
2024/01/15 21:50:11 INFO     ▶ 0001 Using 'beego-web' as 'appname'
2024/01/15 21:50:11 INFO     ▶ 0002 Initializing watcher...
cannot install, GOBIN must be an absolute path
2024/01/15 21:50:28 SUCCESS  ▶ 0003 Built Successfully!
2024/01/15 21:50:28 INFO     ▶ 0004 Restarting 'beego-web.exe'...
2024/01/15 21:50:28 SUCCESS  ▶ 0005 './beego-web.exe' is running...
2024/01/15 21:50:29.819 [I] [server.go:281]  http server Running on http://:8080

访问localhost:8080

api项目创建

通过 bee api 创建api项目

C:\Users\leell\go\src>bee api beego-api
2024/01/15 21:54:15.539 [D]  init global config instance failed. If you do not use this, just ignore it.  open conf/app.conf: The system cannot find the path specified.
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v2.1.0
2024/01/15 21:54:15 INFO     ▶ 0001 Generate api project support go modules.
2024/01/15 21:54:15 INFO     ▶ 0002 Creating API...
        create   C:\Users\leell\go\src\beego-api\go.mod
        create   C:\Users\leell\go\src\beego-api
        create   C:\Users\leell\go\src\beego-api\conf
        create   C:\Users\leell\go\src\beego-api\controllers
        create   C:\Users\leell\go\src\beego-api\tests
        create   C:\Users\leell\go\src\beego-api\conf\app.conf
        create   C:\Users\leell\go\src\beego-api\models
        create   C:\Users\leell\go\src\beego-api\routers\
        create   C:\Users\leell\go\src\beego-api\controllers\object.go
        create   C:\Users\leell\go\src\beego-api\controllers\user.go
        create   C:\Users\leell\go\src\beego-api\tests\default_test.go
        create   C:\Users\leell\go\src\beego-api\routers\router.go
        create   C:\Users\leell\go\src\beego-api\models\object.go
        create   C:\Users\leell\go\src\beego-api\models\user.go
        create   C:\Users\leell\go\src\beego-api\main.go
2024/01/15 21:54:15 SUCCESS  ▶ 0003 New API successfully created!

启动beego-web web服务

C:\Users\leell\go\src\beego-api>go mod tidy
go: finding module for package github.com/kr/text
go: found github.com/kr/text in github.com/kr/text v0.2.0

C:\Users\leell\go\src\beego-api>bee run
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v2.1.0
2024/01/15 21:56:20 INFO     ▶ 0001 Using 'beego-api' as 'appname'
2024/01/15 21:56:20 INFO     ▶ 0002 Initializing watcher...
cannot install, GOBIN must be an absolute path
2024/01/15 21:56:26 SUCCESS  ▶ 0003 Built Successfully!
2024/01/15 21:56:26 INFO     ▶ 0004 Restarting 'beego-api.exe'...
2024/01/15 21:56:26 SUCCESS  ▶ 0005 './beego-api.exe' is running...
2024/01/15 21:56:28.138 [I] [server.go:281]  http server Running on http://:8080

生成的routers.go文件,更多路由设置参考文章:beego 路由设置 - 汇思班

func init() {
	ns := beego.NewNamespace("/v1",
		beego.NSNamespace("/object",
			beego.NSInclude(
				&controllers.ObjectController{},
			),
		),
		beego.NSNamespace("/user",
			beego.NSInclude(
				&controllers.UserController{},
			),
		),
	)
	beego.AddNamespace(ns)
}

当访问接口:

[root@k8s-master01 fastcms]# curl -X 'GET'  'http://192.168.10.101:8080/v1/user'   -H 'accept: application/json'
{
  "user_11111": {
    "Id": "user_11111",
    "Username": "astaxie",
    "Password": "11111",
    "Profile": {
      "Gender": "male",
      "Age": 20,
      "Address": "Singapore",
      "Email": "astaxie@gmail.com"
    }
  }
}

bee项目打包

pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接把打包之后的项目上传,解压就可以部署了

C:\Users\leell\go\src\beego-web>bee pack
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v2.1.0
2024/01/16 00:14:00 INFO     ▶ 0001 Packaging application on 'C:\Users\leell\go\src\beego-web'...
2024/01/16 00:14:00 INFO     ▶ 0002 Building application (beego-web)...
2024/01/16 00:14:00 INFO     ▶ 0003 Using: GOOS=windows GOARCH=amd64
2024/01/16 00:14:05 SUCCESS  ▶ 0004 Build Successful!
2024/01/16 00:14:05 INFO     ▶ 0005 Writing to output: C:\Users\leell\go\src\beego-web\beego-web.tar.gz
2024/01/16 00:14:05 INFO     ▶ 0006 Excluding relpath prefix: .
2024/01/16 00:14:05 INFO     ▶ 0007 Excluding relpath suffix: .go:.DS_Store:.tmp:go.mod:go.sum
2024/01/16 00:14:06 SUCCESS  ▶ 0008 Application packed!

会在beego-web目录下生成一个beego-web.tar.gz文件,文件列表:

views
static
conf
beego-web.exe

异常问题

刚开始访问http://192.168.10.101:8080/v1/user 出现下面的问题,排查了好久,都开始怀疑beego是否是个稳定的框架了。

​​结果发现可能是beego是v1版本,升级了v2就正常了

PS C:\Users\leell\go\src\beego-api> go get github.com/astaxie/beego/v2
go: module github.com/astaxie/beego@upgrade found (v1.12.3), but does not contain package github.com/astaxie/beego/v2

这样设计合理多了,里面的接口地址通过接口注解就能访问了,做过Java来写go没有注解确实还是希望有这种便捷的方式开发,看看下面接口注解方式是不是很nice了,完全很轻松实现restful api的请求方式。通过bee api生成的项目还有put、post、delete的请求方式,自行观看。

// @Title GetAll
// @Description get all Users
// @Success 200 {object} models.User
// @router / [get]
func (u *UserController) GetAll() {
	users := models.GetAllUsers()
	u.Data["json"] = users
	u.ServeJSON()
}

// @Title Get
// @Description get user by uid
// @Param	uid		path 	string	true		"The key for staticblock"
// @Success 200 {object} models.User
// @Failure 403 :uid is empty
// @router /:uid [get]
func (u *UserController) Get() {
	uid := u.GetString(":uid")
	if uid != "" {
		user, err := models.GetUser(uid)
		if err != nil {
			u.Data["json"] = err.Error()
		} else {
			u.Data["json"] = user
		}
	}
	u.ServeJSON()
}

参考文章:https://www.fansimao.com/785059.html

https://www.huisiban.com/703561.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1387841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文心一言 vs. ChatGPT:哪个更胜一筹?

文心一言 vs. ChatGPT:从简洁美到深度思考的文本生成之旅 近年来,文本生成工具的崛起使得人们在表达和沟通方面拥有了更多的选择。在这个领域中,文心一言和ChatGPT作为两个备受瞩目的工具,各自以独特的优势展现在用户面前。本文将…

深度系统QT 环境搭建

1.QT安装 不折腾最新版直接去商店搜索QT安装。 2.修改su密码,安装需要权限 打开一个终端,然后输入下面的命令:按照提示输入密码按回车就行。 sudo passwd 回车后会出现让你输入现在这个账户的密码: 3.编译环境安装。 安…

[链路层] 点对点协议 PPP

目录 1、PPP协议的特点 2、PPP协议的组成和帧格式 3、PPP协议的工作状态 目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。 1、PPP协议的特点 我们知道,互联网用户通常都要连接到某个 ISP 才能接入到互联网。PPP 协议就是用户计算机…

系统架构11 - 数据库基础(上)

数据库基础 数据库基本概念概述三级模式、两级映像概念模式外模式内模式二级映像逻辑独立性物理独立性 数据库设计需求分析概念结构设计逻辑结构设计物理设计数据库实施阶段据库运行和维护阶段 数据模型E-R模型关系模型模型转换E-R图的联系 关系代数 数据库基本概念 概述 数据…

Linux Mii management/mdio子系统分析之五 PHY状态机分析及其与net_device的关联

(转载)原文链接:https://blog.csdn.net/u014044624/article/details/123303714 前面几章基本上完成了mdio模块驱动模型的分析,本篇文章主要讲述phy device的状态机以及phy device与net_device的关联。Phy device主要是对phy的抽象…

CCPC 2023 北京市赛 G.【模板】线段树(线段树区间合并20次多项式)

题目 思路来源 lyw 题解 洛谷高仿题目P4247 (aix)(aix)(aix)注意到当x有超过20项时,20个2相乘,对2的20次方取模就为0 所以,维护0次项到19次项乘积的和,向上合并时,是两个多项式卷积,这里暴力相乘即可 …

AI教我学编程之C#类的基本概念(2)

前言 AI教我学编程之C#类的基本概念(2) 已经更新,欢迎道友们前往阅读,本节我们继续学习C#类的基本概念 目录 上节回顾 质疑 对话AI 特殊情况 发问 解释 数据/函数成员 类和程序–实现一个简单的程序 实现尝试 声明类 类的成员…

如何判断售卖的医疗器械产品是二类还是三类

售卖医疗器械需关注产品本身是否为一、二、三类医疗器械。第一类医疗器械为一般项目的经营范围无需取得备案或许可证即可销售。第二类医疗器械产品需办理第二类医疗器械的备案方可销售。第三类医疗器械需取得医疗器械经营许可证且许可证上的经营范围需与销售的产品对应方可销售…

漏洞复现-Yearning front 任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

关于 Error: Cannot find module ‘webpack/lib/RuleSet‘ 的详细解决方法(亲测有效)- 以及删除脚手架的方法

对于出现的这个错误,之前我也尝试了网上的多种解决方案,最终经过测试后,是通过将原来的 vue/cli 版本降级到 4.5.15 版本,最后再重新安装 node_modules 包 才得以解决。 下面是我将介绍怎么安装 4.5.15 版本的脚手架等。 &#x…

运筹说 第65期 | 动态规划的基本概念和基本原理

20世纪50年代初,美国数学家R. Bellman 等人在解决多阶段决策优化问题时提出了一种高效的求解方法——动态规划(Dynamic Programming),该方法基于多阶段决策优化问题的特点,把多阶段问题转换为一系列互相联系的单阶段问…

【经典算法】有趣的算法之---遗传算法梳理

every blog every motto: You can do more than you think. 0. 前言 遗传算法是一种基于自然选择和遗传机制的优化算法,因此它通常被用于求解各种最优化问题,例如函数优化、特征选择、图像处理等。 一言以蔽之: 将数学中的优化问题&#xf…

人机协同中存在一个独特的时空体系

一、在人机协同中存在一个独特的时空体系 在人机这个独特的时空体系中,人和机器之间的时间和空间的交织和共同作用。 在时间维度上,人机协同体系中的人和机器具有不同的时间节奏和速度。人类有限的生命周期和有时候需要休息的需求使得他们的工作时间和生…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (3) | 正则化与最优化

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

Android 12+ MQTT适配

最终的解决方案是下载源码去改。我用的是已经修改好了的库,如果包名要自己的, 要注意: 1. compileSdk 34 和 targetSdk 34 改成33(Android12)或者34(Android13)。 2. 下载的 module 导入。 …

【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?

文章目录 一. “解耦”概述二. 如何给代码“解耦”?1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。 3. 模块化4. 其他设计思想和原则4.…

QT属性动画

时间记录:2024/1/15 一、介绍 属性动画类为QPropertyAnimation,类似于CSS的keyframes关键帧 二、分类及使用步骤 1.几何动画 (1)创建QPropertyAnimation对象 (2)setPropertyName方法设置属性名称&#…

谷歌验证码|某爬虫问答社区登录参数分析

关注它,不迷路。 本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除! 1.目标地址 aHR0cHM6Ly9iYnMubmlnaHR0ZWFtLmNuL21lbWJlci5waHA/bW9kPW…

高通平台开发系列讲解(PCIE篇)MHI (Modem Host Interface)驱动详解

文章目录 一、MHI驱动代码二、MHI读数据流程三、MHI写数据流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢MHI (Modem Host Interface)我们通过名字顾名思义知道,它是Modem与Host的桥梁。 MHI 可以很容易地适应任何外围总线,但它主要用于基于 PCIe 的设备。 MHI(…

ElasticSearch降本增效常见的方法 | 京东云技术团队

Elasticsearch在db_ranking 的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位。 随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法&#x…