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

前提文章: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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用ffmpeg进行视频截取

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-sta…

概率论与数理统计————3.随机变量及其分布

一、随机变量 设E是一个随机试验,S为样本空间,样本空间的任意样本点e可以通过特定的对应法则X,使得每个样本点都有与之对应的数对应,则称XX(e)为随机变量 二、分布函数 分布函数:设X为随机变量…

VC++读取ini文件示例2

之前学习过ini文件读写;继续熟悉; CString str1;UINT m1 0;UINT m2 0;TCHAR p1[32];m1 GetPrivateProfileString(_T("mymoney1"), _T("moneyname1"), _T("空"), p1, sizeof(p1), _T("E:\\VCPrj\\VC2015\\cattest\…

transbigdata笔记:其他方法

1 出租车相关 1.1 taxigps_to_od 提取出租车OD信息 transbigdata.taxigps_to_od(data, col[VehicleNum, Stime, Lng, Lat, OpenStatus]) 输入出租车GPS数据,提取OD信息 data出租车GPS数据col[VehicleNum, Time, Lng, Lat, OpenStatus]五列 比如GPS数据长这样&am…

ITIL 4—变更支持实践

一、术语和概念 任何可能对服务产生直接或间接影响的添加,修改或删除行为。 变更支持实践要确保每个变更都能达到预期的结果。这与聚焦价值的指导性原则是相互统一的。与变更的技术细节相比,利益相关者更关心变更带来的价值。有时候,虽然准…

【算法与数据结构】Java实现查找与排序

文章目录 第一部分:查找算法二分查找插值查找分块查找哈希查找树表查找 第二部分:排序算法冒泡排序选择排序插入排序快速排序 总结 第一部分:查找算法 二分查找 也叫做折半查找,属于有序查找算法。 前提条件:数组数据…

教你用五步让千年的兵马俑跳上现代的科目三?

以下是一张我上月去西安拍的兵马俑照片: 使用通义千问,5步就能它舞动起来,跳上现在流行的“科目三”舞蹈。 千年兵马俑跳上科目三 全民舞王 第1步 打开通义千问App,我使用的是华为手机,苹果版的没试; 在…

西米支付:到底什么是NFT(数字藏品支付通道)(NFT支付通道)

NFT到底指的是什么呢? 数字藏品的实际意义在于它们打破了传统艺术品的物质形态束缚。数字藏品可以通过虚拟现实和区块链技术进行创作、展示和交易。它们不仅可以满足人们对艺术品的审美需求,还可以成为一种投资和资产保值增值的方式。数字藏品的实际意义…

128基于matlab的粒子群优化算法寻找多元函数的最大值

基于matlab的粒子群优化算法寻找多元函数的最大值,可定义多元函数,变量区间范围,输出最大值条件下的变量值。程序已调通,可直接运行。 128matlab多元函数极值 (xiaohongshu.com)

小程序基础学习(缓存)

目录 设置用户信息缓存(同步): wx.setStorageSync(key,value) ​编辑 获取用户信息缓存(同步): wx.getStorageSync(key) 删除用户信息缓存(同步): wx.removeStorageSync(key) 清空用户信息缓存(同步): wx.clearStorageSync() 设置用户信息缓存加密信息(异步): wx.setStorage(…

flink 1.18 sql gateway /sql gateway jdbc

一 sql gateway 注意 之所以直接启动gateway 能知道yarn session 主要还是隐藏的配置文件,但是配置文件可以被覆盖,多个session 保留最新的applicationid 1 安装flink (略) 2 启动sql-gatway(sql-gateway 通过官网介绍只能运行…

16位单片机单片机S1C17153

16位单片机单片机 .16KB ROM / 2KB内存 * S1C17653对于程序开发很有用。 .产生具有内置振荡器的操作时钟。 - OSC3B振荡器电路:2MHz/1MHz/500kHz(类型)内部振荡器电路 -OSC1无振荡器电路:32.768 kHz(类型&#xf…

css3过渡与动画

css3过渡与动画 前言过渡过渡的基本使用 transition兼容性transition属性基本使用哪些属性可以参与过渡all过渡的四个小属性 过渡的缓动效果常用缓动参数贝塞尔曲线 过渡效果实战 动画动画的定义和调用动画的执行次数 动画效果实战 案例:发光的灯泡案例:…

磁盘raid1降级后,mdxxx rota发生变化

背景 虚拟机系统盘vda后端使用宿主机ssd盘lvm组raid1,虚拟机内部查看vda磁盘类型(rota=1):机械硬盘,vda后端raid1降级导致磁盘类型降级:rota 0---->1,vda磁盘类型显示不正确,应该是ssd类型(rota=0); 分析 1.基础 1.1 linux磁盘类型 Rota表示磁盘类型:(1)0,表…

设计模式—行为型模式之中介者模式

设计模式—行为型模式之中介者模式 中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,减少对象间混乱的依赖关系,从而使其耦合松散,而且可以独立地改变它们之…

基于SSM的交流论坛设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue、HTML 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是…

What is `@Repository` does?

Repository 是Spring注解,标识数据访问层组件(DAO, Data Access Object) 当一个类被标记为 Repository 时: 1、组件扫描与自动代理: Spring通过组件扫描(Component Scan)机制发现带有 Reposit…

基于FPGAWS2812B的贪吃蛇方案设计(含源码)

第1章 基于FPGA&WS2812B的贪吃蛇方案设计 1.2 贪吃蛇游戏系统的功能需求分析 为了更好的实现我们的贪吃蛇游戏系统,我们需要对项目进行功能分析,利于我们对整个系统的分析、架构。 首先,对于整个游戏系统,我们需要界面来引…

ChatGPT Plus 经验分享:是否值得花钱升级?

ChatGPT Plus 经验分享:是否值得花钱升级? 五星上将麦克阿瑟曾经说过:“在有钱与没钱面前,我选择了or” ChatGPT 的每月订阅方案- ChatGPT Plus 已经推出一段时间了,目前的费用是$20 USD / 月(约TWD 610 / 月)。 Open…

STM32--7针0.96寸OLED屏幕显示(4线SPI)

本文介绍基于STM32F103C8T60.96寸OLED(7针)的显示(完整程序代码见文末链接) 一、简介 OLED,即有机发光二极管( Organic Light Emitting Diode)。 OLED 由于同时具备自发光,不需背光…