這篇文章給大家分享的是有關(guān)golang如何實(shí)現(xiàn)微信小程序商城后臺(tái)系統(tǒng)的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)從2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元花山做網(wǎng)站,已為上家服務(wù),為花山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
golang和c/c++比起來(lái)是一門新的語(yǔ)言,一直想學(xué),網(wǎng)上搜集了一些資料,有些人說(shuō)很容易上手,確實(shí)是這樣,和C/C++比起來(lái),少了很多亂七八糟的語(yǔ)法。學(xué)一門新的語(yǔ)言,最好的方法就是動(dòng)手寫一些東西,最近小程序也比較火,也想學(xué)一下,網(wǎng)絡(luò)上搜索的一些開(kāi)源項(xiàng)目,基本上沒(méi)有g(shù)olang實(shí)現(xiàn)的,大部分都是nodejs和java寫的,那么我就來(lái)實(shí)現(xiàn)一個(gè)golang版的吧,一石二鳥(niǎo)。
開(kāi)發(fā)小程序前后端都需要開(kāi)發(fā),自己的前端經(jīng)驗(yàn)很少,搜索了一些開(kāi)源代碼,有一個(gè)小程序項(xiàng)目讓人眼前一亮,Nideshop,界面做的不錯(cuò),代碼結(jié)構(gòu)也清晰,而且前后端都實(shí)現(xiàn)了,自己的目標(biāo)是學(xué)習(xí)golang和小程序,干脆用golang重寫nideshop吧。
nodejs和java已經(jīng)一些很成熟的框架了,比如nodejs的thinkjs,java的spring框架。golang最近幾年才火起來(lái),有一些web框架也比較新,有下面一些框架:
Beego:開(kāi)源的高性能 Go 語(yǔ)言 Web 框架。https://github.com/astaxie/beegohttps://beego.me
Buffalo:使用 Go 語(yǔ)言快速構(gòu)建 Web 應(yīng)用。https://github.com/gobuffalo/buffalohttps://gobuffalo.io
Echo:簡(jiǎn)約的高性能 Go 語(yǔ)言 Web 框架。https://github.com/labstack/echohttps://echo.labstack.com
Gin:Go 語(yǔ)言編寫的 Web 框架,以更好的性能實(shí)現(xiàn)類似 Martini 框架的 API。https://github.com/gin-gonic/ginhttps://gin-gonic.github.io/gin
Iris:全宇宙最快的 Go 語(yǔ)言 Web 框架。完備 MVC 支持,未來(lái)盡在掌握。https://github.com/kataras/irishttps://iris-go.com
Revel:Go 語(yǔ)言的高效、全棧 Web 框架。https://github.com/revel/revelhttps://revel.github.io
Beego是國(guó)人寫的框架,文檔很全,例子也不少,用的人也多,最后決定用這個(gè)框架。
數(shù)據(jù)庫(kù)采用的是MySQL,使用golang讀寫mysql beego已經(jīng)實(shí)現(xiàn)了orm框架。但是數(shù)據(jù)庫(kù)表需要生成對(duì)應(yīng)的struct,beego的orm貌似沒(méi)有自動(dòng)生成的功能。采用了一個(gè)開(kāi)源庫(kù)go-xorm/cmd,最后生成的數(shù)據(jù)庫(kù)表像下面這樣,奇怪的是沒(méi)有json標(biāo)簽,而且這個(gè)xorm標(biāo)簽,最后golang不認(rèn)報(bào)了錯(cuò)。還有一個(gè)問(wèn)題是有些字段類型xorm生成錯(cuò)了。比如,數(shù)據(jù)庫(kù)中的DECIMAL字段,xorm生成的結(jié)構(gòu)體中的字段類型為string,這個(gè)顯然是錯(cuò)誤的。
type NideshopAd struct { AdPositionId int `xorm:"not null default 0 index SMALLINT(5)"` Content string `xorm:"not null default '' VARCHAR(255)"` Enabled int `xorm:"not null default 1 index TINYINT(3)"` EndTime int `xorm:"not null default 0 INT(11)"` Id int `xorm:"not null pk autoincr SMALLINT(5)"` ImageUrl string `xorm:"not null TEXT"` Link string `xorm:"not null default '' VARCHAR(255)"` MediaType int `xorm:"not null default 0 TINYINT(3)"` Name string `xorm:"not null default '' VARCHAR(60)"` }
moshopserver的框架結(jié)構(gòu)很清晰也很簡(jiǎn)單。
前端小程序發(fā)起HTTP請(qǐng)求到Router(router轉(zhuǎn)發(fā)請(qǐng)求的各個(gè)階段能做一些過(guò)濾,這個(gè)后面要說(shuō)一下),router識(shí)別出請(qǐng)求鏈接,將其轉(zhuǎn)發(fā)到相應(yīng)的controller上面。還有三個(gè)底層的package:
models
單純和數(shù)據(jù)庫(kù)打交道的接口都放在這個(gè)package下面。
services
主要實(shí)現(xiàn)了三類功能,和微信交互的接口,快遞查詢接口和token生成,檢測(cè)接口。
Utils
一些基本的功能函數(shù)放在這個(gè)package下面。
token的生成驗(yàn)證使用了jwt-go這個(gè)第三方庫(kù),使用這個(gè)庫(kù)通過(guò)token來(lái)解析出userID,創(chuàng)建和驗(yàn)證token是否過(guò)期,整個(gè)交互流程是下面這樣子:
小程序打開(kāi)的時(shí)候默認(rèn)不登錄,調(diào)用后臺(tái)接口,因?yàn)闆](méi)有token,解析不出來(lái)userid,返回小程序段提示用戶登錄。
小程序調(diào)用微信后臺(tái)服務(wù)獲取userinfo,調(diào)用moshopserver后臺(tái)登錄接口。
后臺(tái)接口調(diào)用微信后臺(tái),解密userInfo中的相關(guān)字段,生成一條用戶信息插入moshopserver數(shù)據(jù)庫(kù)中。然后從數(shù)據(jù)庫(kù)中取出userid,生成帶過(guò)期時(shí)間的token。返回給小程序。
小程序調(diào)用微信后臺(tái)接口,將token存儲(chǔ)到微信服務(wù)端。接下來(lái)每次調(diào)用moshopserver后臺(tái),都要從微信后臺(tái)取出token,然后傳遞到moshopsever后臺(tái)。
如果token過(guò)期或者無(wú)效,后端解析不出userid,返回給小程序,讓其再次登錄。生成新的token。如此反復(fù)。
Nideshop中做了一些設(shè)計(jì),有些接口即使token過(guò)期也能訪問(wèn),不需要提示用戶再次登錄。moshopserver中也實(shí)現(xiàn)了這個(gè)功能。采用了beego中的過(guò)濾器:
beego.InsertFilter("/api/*", beego.BeforeExec, services.FilterFunc, true, true)
使用的是BeforeExec參數(shù),這個(gè)階段Router已經(jīng)識(shí)別出了Controller和Action的具體類型,我們可以自己加判斷,到底哪些Controller和Action需要用戶登錄權(quán)限,這些Controller和action放在了配置文件api.conf中:
[controller] publicController= {'index','catalog','topic','auth','goods','brand','search','region'} [action] publicAction={'comment/list','comment/count','cart/index','cart/add','cart/checked','cart/update','cart/delete','cart/goodscount','pay/notify'}
如果HTTP請(qǐng)求鏈接的Controller和Action都不在配置文件中,則跳過(guò)接口調(diào)用,直接返回小程序提示其進(jìn)行重新登錄。
moshopserver還是有一些bug,因?yàn)闇y(cè)試不夠充分,應(yīng)該也還存在一些未知的bug,以后慢慢修復(fù)。
已經(jīng)問(wèn)題:
訂單列表中商品信息不顯示。
用戶登錄后沒(méi)有顯示登錄(頭像和用戶名不顯示)
歡迎Star,歡迎提問(wèn)題。
https://github.com/harlanc/moshopserver
客戶端小程序界面截圖
最后附幾張截圖
golang可以做服務(wù)器端開(kāi)發(fā),但golang很適合做日志處理、數(shù)據(jù)打包、虛擬機(jī)處理、數(shù)據(jù)庫(kù)代理等工作。在網(wǎng)絡(luò)編程方面,它還廣泛應(yīng)用于web應(yīng)用、API應(yīng)用等領(lǐng)域。
感謝各位的閱讀!關(guān)于“golang如何實(shí)現(xiàn)微信小程序商城后臺(tái)系統(tǒng)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
當(dāng)前題目:golang如何實(shí)現(xiàn)微信小程序商城后臺(tái)系統(tǒng)
文章源于:http://muchs.cn/article20/joosco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、外貿(mào)建站、域名注冊(cè)、ChatGPT、做網(wǎng)站、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)