欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Golang入門系列(十三)如何用Beego快速開發(fā)web應(yīng)用

2024-03-21    分類: 網(wǎng)站建設(shè)

接著之前的內(nèi)容,前面已經(jīng)講過很多Golang的基礎(chǔ)語法,mysql的使用,redis的使用,也講了orm框架,如何創(chuàng)建一個(gè)webapi 服務(wù)等等,感興趣的可以看看以前的文章。今天要來說一說,如何用beego開發(fā)web應(yīng)用。

介紹

它是由國內(nèi)團(tuán)隊(duì)開發(fā)的開源框架,文檔基本都是中文,簡單易懂。

安裝

需要安裝 Beego 和 Bee 的開發(fā)工具:

$ gogetgithub.com/astaxie/beego$ gogetgithub.com/beego/bee

注意:

beege和bee是兩個(gè)概念。beego是框架,bee是工具,是命令。在安裝Beego前,先確認(rèn)是否將$GOPATH/bin寫入GO環(huán)境中。創(chuàng)建應(yīng)用

創(chuàng)建一個(gè)名為webDemo的應(yīng)用

$ beenewwebDemo//創(chuàng)建一個(gè)web應(yīng)用$ bee api webDemo //創(chuàng)建一個(gè)api應(yīng)用編譯運(yùn)行

進(jìn)入webDemo目錄中,執(zhí)行bee run,就會(huì)完成編譯、運(yùn)行:

$ bee run

成功后,打開瀏覽器訪問:http://localhost:8080,可以看到如圖:

項(xiàng)目結(jié)構(gòu)

以上就beego 的安裝和運(yùn)行簡單的介紹完了,下面我們就通過訂單查詢和新增的例子來學(xué)習(xí)學(xué)習(xí)如何用beego開發(fā)web應(yīng)用。一般的 beego 項(xiàng)目的目錄如下所示:

├── conf //配置文件│ └── app.conf├── controllers //控制器│ └── default.go├── main.go ├── models //模型 │ └── models.go├── routers //路由│ └──router.go├── static //靜態(tài)文件│ ├── css│ ├── ico│ ├── img│ └── js└── views //界面 └── index.tpl

1、conf

beego 默認(rèn)會(huì)創(chuàng)建配置文件目錄,里面放置系統(tǒng)的配置文件,這里我們先創(chuàng)建app.conf ,增加數(shù)據(jù)庫連接配置。

appname= webDemohttpport =8080runmode = devDBConn="root:root@tcp(localhost:3306)/zwz_test?charset=utf8"

2、controller

controllers目錄主要是控制器相關(guān)的,我們在controllers中增加pay.go

package controllersimport ("webDemo/models")func(c*MainController)PayQuery() {AccountID,_:=c.GetInt64("AccountID1") payment,_:= models.GetPaymenRec(AccountID)c.Data["AccountID"] = payment.AccountIDc.Data["PartnerID"] = payment.PartnerIDc.Data["UserID"] = payment.UserIDc.Data["CreateTime"] = payment.CreateTimec.Data["Amount"] = payment.Amountc.Data["OuterTradeNo"] = payment.OuterTradeNoc.Data["Remark"] = payment.Remarkc.Data["Status"] = payment.Statusc.Data["Msg"] = payment.Msgc.TplName="query.html"}func(c*MainController)PayAdd() {varpayment models.PaymentRecordStrc.ParseForm(&payment) pay,_:= models.AddPaymenRec(payment)c.Data["AccountID"] = pay.AccountIDc.Data["PartnerID"] = pay.PartnerIDc.Data["UserID"] = pay.UserIDc.Data["CreateTime"] = pay.CreateTimec.Data["Amount"] = pay.Amountc.Data["OuterTradeNo"] = pay.OuterTradeNoc.Data["Remark"] = pay.Remarkc.TplName="query.html"}

3、models

models是存放實(shí)體類文件,屬于模型層,負(fù)責(zé)定義實(shí)體類和數(shù)據(jù)增刪改查的操作。在models目錄下增加pay.go 。

packagemodelsimport ("database/sql""errors""strconv""time""github.com/astaxie/beego"_"github.com/go-sql-driver/mysql")varDb *sql.DBtype PaymentRecordstruct{ Idint64AccountIDint64PartnerIDstringUserIDstringCreateTimestringAmountfloat64OuterTradeNostringRemarkstringStatusintMsgstring}typePaymentRecordStrstruct{ AccountIDstringPartnerIDstringUserIDstringCreateTimestringAmountstringOuterTradeNostringRemarkstring}funcinit(){ dbconn := beego.AppConfig.String("DBConn") db, err := sql.Open("mysql", dbconn)iferr !=nil{return} db.SetMaxOpenConns(2000) db.SetMaxIdleConns(0) db.Ping() Db = db}funcClose(){ifDb !=nil{ Db.Close() }}funcAddPaymenRec(rec PaymentRecordStr)(PaymentRecord, error){varisql ="INSERT pay_demo SET account_id=?,partner_id=?,user_id=?,amount=?,outer_tradeno=?,remark=?"AccountID, _ := strconv.ParseInt(rec.AccountID,10,64) Amount, _ := strconv.ParseFloat(rec.Amount,64) response := PaymentRecord{0, AccountID, rec.PartnerID, rec.UserID, rec.CreateTime, Amount, rec.OuterTradeNo, rec.Remark,0,""}ifDb ==nil{returnresponse, errors.New("AddPaymenRec connect mysql failed") } stmt, _ := Db.Prepare(isql)deferstmt.Close() beego.Informational("AddPaymenRec rec=%v", rec) res, err := stmt.Exec(AccountID, rec.PartnerID, rec.UserID, Amount, rec.OuterTradeNo, rec.Remark)iferr ==nil{ response.Id, _ = res.LastInsertId() response.Status =1response.Msg ="已生效"returnresponse,nil}returnresponse,nil}funcGetPaymenRec(AccountIDint64)(PaymentRecord, error){varqsql ="SELECT * FROM pay_demo WHERE account_id=?"varresponse PaymentRecord response.Msg ="失敗"ifAccountID !=0{ifDb ==nil{returnresponse, errors.New("GetPaymenRec connect mysql failed") } stmt, _ := Db.Prepare(qsql) rows, err := stmt.Query(AccountID)deferrows.Close()iferr !=nil{returnresponse, err }vartimedatestringforrows.Next() { err = rows.Scan(&response.Id, &response.AccountID, &response.PartnerID, &response.UserID, &timedate, &response.Amount, &response.OuterTradeNo, &response.Remark)iferr !=nil{returnresponse, err } DefaultTimeLoc := time.Local loginTime, err := time.ParseInLocation("2006-01-02 15:04:05", timedate, DefaultTimeLoc)iferr ==nil{ unix_time := loginTime.Unix()//time to int64 response.CreateTime = time.Unix(unix_time, 0).Format("2006-01-02 15:04:05") response.Status = 2 response.Msg = "成功" return response, err } else { return response, err } } return response, nil } return response, errors.New("GetPaymenRec Requset is non porinter")}

和實(shí)體對應(yīng)的還有數(shù)據(jù)庫中的表結(jié)構(gòu),這里我們手動(dòng)在數(shù)據(jù)庫中增加pay_demo表,實(shí)際上beego封裝了orm,可自動(dòng)創(chuàng)建對應(yīng)的表。

CREATETABLE`pay_demo`(`id`int(64)NOTNULLAUTO_INCREMENT,`account_id`int(64)NOTNULL,`partner_id`varchar(50)CHARACTERSETutf8DEFAULTNULL,`user_id`varchar(50)CHARACTERSETutf8DEFAULTNULL,`create_time`datetimeDEFAULTCURRENT_TIMESTAMP,`amount`doubleDEFAULT0,`outer_tradeno`varchar(50)CHARACTERSETutf8DEFAULTNULL,`remark`varchar(255)CHARACTERSETutf8DEFAULTNULL, PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=5024DEFAULTCHARSET=utf8COLLATE=utf8_bin;

4、views

views目錄負(fù)責(zé)存放前端模板文件。beego支持t4模板,功能非常強(qiáng)大。我們將原有的index.tpl 刪除,增加新的index.html 和query.html

index.html頁面:

html><html><head><title>webDemo

非常感謝您讀完創(chuàng)新互聯(lián)的這篇文章:"Golang入門系列(十三)如何用Beego快速開發(fā)web應(yīng)用",僅為提供更多信息供用戶參考使用或?yàn)閷W(xué)習(xí)交流的方便。我們公司提供:網(wǎng)站建設(shè)、網(wǎng)站制作、官網(wǎng)建設(shè)、SEO優(yōu)化、小程序制作等服務(wù),歡迎聯(lián)系我們提供您的需求。

本文標(biāo)題:Golang入門系列(十三)如何用Beego快速開發(fā)web應(yīng)用
網(wǎng)站鏈接:http://aaarwkj.com/news20/321020.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站營銷標(biāo)簽優(yōu)化、云服務(wù)器、ChatGPT、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
日韩欧美亚洲综合另类| 日韩亚洲国产欧美在线观看| 亚洲日本一区二区高清| 精品人妻一区二区四区| 国产婷婷综合一区二区| 亚洲av毛片免费在线| 日本av人妻在线观看| 国产不卡的视频在线观看| 91国内精品手机在线高清| 欧美日韩人美精品一区在线| 精品国产91乱码一区二区三区| 久久精品人妻麻豆尤物| 国产av剧情同事肉体秘密| 亚洲国产视频不卡一区| 国产女同互慰一区二区| 九九视频精品免费高清视频| 午夜视频在线观看麻豆| 国产三级精品在线免费| 亚洲欧美久久一区二区三区 | 免费国产污网站在线观看| 日本欧美高清一区二区| 超碰97精品在线观看| 国产精品国产三级国产不产一地| 日韩av在线高清播放| 成年自拍视频在线观看| 欧美日韩亚洲精品瑜伽裤| 风韵丰满熟妇老熟女啪啪| 99热这里在线只有精品| 久久国产欧美日韩精品| 日本午夜福利免费在线播放| 午夜免费福利视频一区| 国产女人高潮流白丝视频| 日本在线不卡一区二区| 久久精品亚洲精品国产| 中文字幕国产精品91| 91亚洲婷婷国产综合精品| 国产精品毛片一区二区三区| 精品黄色大片不卡国产| 国产精品中文字幕有码| 亚洲欧美日韩特级黄片| 国产叼嘿一区二区视频|