国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - golang實現微信小程序商城后臺系統(moshopserver)

golang實現微信小程序商城后臺系統(moshopserver)

2020-06-05 14:11HarlanC Golang

這篇文章主要介紹了golang實現微信小程序商城后臺系統(moshopserver),本文通過截圖實例代碼的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

golang和c/c++比起來是一門新的語言,一直想學,網上搜集了一些資料,有些人說很容易上手,確實是這樣,和C/C++比起來,少了很多亂七八糟的語法。學一門新的語言,最好的方法就是動手寫一些東西,最近小程序也比較火,也想學一下,網絡上搜索的一些開源項目,基本上沒有golang實現的,大部分都是nodejs和java寫的,那么我就來實現一個golang版的吧,一石二鳥。

開發小程序前后端都需要開發,自己的前端經驗很少,搜索了一些開源代碼,有一個小程序項目讓人眼前一亮,Nideshop,界面做的不錯,代碼結構也清晰,而且前后端都實現了,自己的目標是學習golang和小程序,干脆用golang重寫nideshop吧。

 

Web框架的選擇

 

nodejs和java已經一些很成熟的框架了,比如nodejs的thinkjs,java的spring框架。golang最近幾年才火起來,有一些web框架也比較新,有下面一些框架:

Beego:開源的高性能 Go 語言 Web 框架。https://github.com/astaxie/beegohttps://beego.me

Buffalo:使用 Go 語言快速構建 Web 應用。https://github.com/gobuffalo/buffalohttps://gobuffalo.io

Echo:簡約的高性能 Go 語言 Web 框架。https://github.com/labstack/echohttps://echo.labstack.com

Gin:Go 語言編寫的 Web 框架,以更好的性能實現類似 Martini 框架的 API。https://github.com/gin-gonic/ginhttps://gin-gonic.github.io/gin

Iris:全宇宙最快的 Go 語言 Web 框架。完備 MVC 支持,未來盡在掌握。https://github.com/kataras/irishttps://iris-go.com

Revel:Go 語言的高效、全棧 Web 框架。https://github.com/revel/revelhttps://revel.github.io

Beego是國人寫的框架,文檔很全,例子也不少,用的人也多,最后決定用這個框架。

 

使用xorm生成數據庫model

 

數據庫采用的是mysql,使用golang讀寫mysql beego已經實現了orm框架。但是數據庫表需要生成對應的struct,beego的orm貌似沒有自動生成的功能。采用了一個開源庫go-xorm/cmd,最后生成的數據庫表像下面這樣,奇怪的是沒有json標簽,而且這個xorm標簽,最后golang不認報了錯。還有一個問題是有些字段類型xorm生成錯了。比如,數據庫中的DECIMAL字段,xorm生成的結構體中的字段類型為string,這個顯然是錯誤的。

?
1
2
3
4
5
6
7
8
9
10
11
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框架結構

 

moshopserver的框架結構很清晰也很簡單。

golang實現微信小程序商城后臺系統(moshopserver)

前端小程序發起HTTP請求到Router(router轉發請求的各個階段能做一些過濾,這個后面要說一下),router識別出請求鏈接,將其轉發到相應的controller上面。還有三個底層的package:

models

單純和數據庫打交道的接口都放在這個package下面。

services

主要實現了三類功能,和微信交互的接口,快遞查詢接口和token生成,檢測接口。

Utils

一些基本的功能函數放在這個package下面。

 

Token驗證

 

token的生成驗證使用了jwt-go這個第三方庫,使用這個庫通過token來解析出userID,創建和驗證token是否過期,整個交互流程是下面這樣子:

  1. 小程序打開的時候默認不登錄,調用后臺接口,因為沒有token,解析不出來userid,返回小程序段提示用戶登錄。
  2. 小程序調用微信后臺服務獲取userinfo,調用moshopserver后臺登錄接口。
  3. 后臺接口調用微信后臺,解密userInfo中的相關字段,生成一條用戶信息插入moshopserver數據庫中。然后從數據庫中取出userid,生成帶過期時間的token。返回給小程序。
  4. 小程序調用微信后臺接口,將token存儲到微信服務端。接下來每次調用moshopserver后臺,都要從微信后臺取出token,然后傳遞到moshopsever后臺。
  5. 如果token過期或者無效,后端解析不出userid,返回給小程序,讓其再次登錄。生成新的token。如此反復。

 

Router過濾器

 

Nideshop中做了一些設計,有些接口即使token過期也能訪問,不需要提示用戶再次登錄。moshopserver中也實現了這個功能。采用了beego中的過濾器:

?
1
beego.InsertFilter("/api/*", beego.BeforeExec, services.FilterFunc, true, true)

使用的是BeforeExec參數,這個階段Router已經識別出了Controller和Action的具體類型,我們可以自己加判斷,到底哪些Controller和Action需要用戶登錄權限,這些Controller和action放在了配置文件api.conf中:

?
1
2
3
4
[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請求鏈接的Controller和Action都不在配置文件中,則跳過接口調用,直接返回小程序提示其進行重新登錄。

 

問題

 

moshopserver還是有一些bug,因為測試不夠充分,應該也還存在一些未知的bug,以后慢慢修復。

已經問題:

  • 訂單列表中商品信息不顯示。
  • 用戶登錄后沒有顯示登錄(頭像和用戶名不顯示)

歡迎Star,歡迎提問題。

https://github.com/harlanc/moshopserver

客戶端小程序界面截圖

最后附幾張截圖

golang實現微信小程序商城后臺系統(moshopserver)

golang實現微信小程序商城后臺系統(moshopserver)

golang實現微信小程序商城后臺系統(moshopserver)

golang實現微信小程序商城后臺系統(moshopserver)

golang實現微信小程序商城后臺系統(moshopserver)

golang實現微信小程序商城后臺系統(moshopserver)

總結

到此這篇關于golang實現微信小程序商城后臺系統(moshopserver)的文章就介紹到這了,更多相關golang小程序商城系統內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/harlanc/p/10995253.html

延伸 · 閱讀

精彩推薦
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
主站蜘蛛池模板: 日韩一区二区三区在线观看 | 亚洲欧美自拍偷拍 | 亚洲一区二区免费看 | 欧美日韩精品免费 | 欧美视频一区二区三区 | 三区视频| 国内精品久久久久 | 五月婷婷丁香在线 | 日本网站在线免费观看 | 免费的黄视频 | 欧美精品黄色 | 久久在线 | h视频免费观看 | 在线观看黄色 | 中文字幕自拍偷拍 | 久久久久久毛片免费看 | 中文字幕一区二区三区在线视频 | 精品国产凹凸成av人导航 | 国产一区二区av | 国产中文 | 精品亚洲国产成av人片传媒 | 欧美视频一区二区三区 | 国产精品亚洲综合 | 国产一区二区三区免费在线观看 | 真人一级毛片 | 欧美精品乱码久久久久久按摩 | 色网站在线观看 | 国产一区二区在线免费观看 | 国产女精品 | 欧美成人免费 | 欧美一级免费看 | 久久久国产精品免费观看 | 国产毛片精品 | 精品美女久久久 | 高清国产一区 | 国产精品99在线观看 | 日韩精品专区在线影院重磅 | 在线亚洲一区 | 国产精品视频免费 | 一级特色黄大片 | 婷婷综合|