探索小游戏分发的策略与市场趋势,助力开发者成功
416
2023-11-09
golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一些资料,有些人说很容易上手,确实是这样,和C/C++比起来,少了很多乱七八糟的语法。学一门新的语言,最好的方法就是动手写一些东西,最近小程序也比较火,也想学一下,网络上搜索的一些开源项目,基本上没有golang实现的,大部分都是nodejs和java写的,那么我就来实现一个golang版的吧,一石二鸟。
开发小程序前后端都需要开发,自己的前端经验很少,搜索了一些开源代码,有一个小程序项目让人眼前一亮,Nideshop,界面做的不错,代码结构也清晰,而且前后端都实现了,自己的目标是学习golang和小程序,干脆用golang重写nideshop吧。
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是国人写的框架,文档很全,例子也不少,用的人也多,最后决定用这个框架。
数据库采用的是mysql,使用golang读写mysql beego已经实现了orm框架。但是数据库表需要生成对应的struct,beego的orm貌似没有自动生成的功能。采用了一个开源库go-xorm/cmd,最后生成的数据库表像下面这样,奇怪的是没有json标签,而且这个xorm标签,最后golang不认报了错。还有一个问题是有些字段类型xorm生成错了。比如,数据库中的DECIMAL字段,xorm生成的结构体中的字段类型为string,这个显然是错误的。
moshopserver的框架结构很清晰也很简单。
前端小程序发起HTTP请求到Router(router转发请求的各个阶段能做一些过滤,这个后面要说一下),router识别出请求链接,将其转发到相应的controller上面。还有三个底层的package:
models
单纯和数据库打交道的接口都放在这个package下面。
services
主要实现了三类功能,和微信交互的接口,快递查询接口和token生成,检测接口。
Utils
一些基本的功能函数放在这个package下面。
token的生成验证使用了jwt-go这个第三方库,使用这个库通过token来解析出userID,创建和验证token是否过期,整个交互流程是下面这样子:
小程序打开的时候默认不登录,调用后台接口,因为没有token,解析不出来userid,返回小程序段提示用户登录。 小程序调用微信后台服务获取userinfo,调用moshopserver后台登录接口。 后台接口调用微信后台,解密userInfo中的相关字段,生成一条用户信息插入moshopserver数据库中。然后从数据库中取出userid,生成带过期时间的token。返回给小程序。 小程序调用微信后台接口,将token存储到微信服务端。接下来每次调用moshopserver后台,都要从微信后台取出token,然后传递到moshopsever后台。 如果token过期或者无效,后端解析不出userid,返回给小程序,让其再次登录。生成新的token。如此反复。Nideshop中做了一些设计,有些接口即使token过期也能访问,不需要提示用户再次登录。moshopserver中也实现了这个功能。采用了beego中的过滤器:
使用的是BeforeExec参数,这个阶段Router已经识别出了Controller和Action的具体类型,我们可以自己加判断,到底哪些Controller和Action需要用户登录权限,这些Controller和action放在了配置文件api.conf中:
如果HTTP请求链接的Controller和Action都不在配置文件中,则跳过接口调用,直接返回小程序提示其进行重新登录。
moshopserver还是有一些bug,因为测试不够充分,应该也还存在一些未知的bug,以后慢慢修复。
已经问题:
订单列表中商品信息不显示。 用户登录后没有显示登录(头像和用户名不显示)欢迎Star,欢迎提问题。
https://github.com/harlanc/moshopserver
客户端小程序界面截图
最后附几张截图
总结
到此这篇关于golang实现微信小程序商城后台系统(moshopserver)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~