Restful项目小结

Restful项目小结

一、项目简介

本次项目我们实现的是复制swapi这个网站,我负责的主要是后端部分:

数据库的部分(boltDB)还有jwt的部分。

项目地址:swapi项目

二、boltDB使用

比较:

相比之前学过的Mysql和oracle,boltDB数据库没有行、列的属性,这使得boltDB更为轻量,但是获取数据的手段就少了些(使用键值对来获取数据)。

读写:

读写函数是boltDB.Update():

err = boltDB.Update(func(tx *bolt.Tx) error {
		user := tx.Bucket([]byte("Users"))
		// store user info
		newEntity := &User {
			Username : name,
			Password : pass,
			Email : email,
		}
		jsonStr, err := json.Marshal(newEntity)
		if err != nil {
			return err
		}
		return user.Put([]byte(name), jsonStr)
	})

只读函数是boltDB.View():

err = boltDB.View(func(tx *bolt.Tx) error {
		bkt := tx.Bucket([]byte("Users"))
		userInfo = bkt.Get([]byte(name))
		return err
	})
可视化工具:

一开始我们使用boltDB没有可视化工具,所以检查代码是否执行成功很麻烦,可视化工具便于检查提交保存数据是否成功。但是boltDB没有相对官方的可视化工具,以下有两个比较好的可视化脚本:

命令行工具

网页工具

三、JWT使用

jwt的go工具

在线工具和语言包工具

Token结构:
  • header(头部)
  • payload(数据)
  • signature(签名)
JWT使用
func ValidateTokenMiddleware(w http.ResponseWriter, r *http.Request) (bool, []byte) {
    token, err := request.ParseFromRequest(r, request.AuthorizationHeaderExtractor,
        func(token *jwt.Token) (interface{}, error) {
            return []byte(SecretKey), nil
        })

    if err == nil {
        if token.Valid {
        	claims := token.Claims.(jwt.MapClaims)
        	if claims["username"] == nil {
        		return false, []byte("Token InValid! Please use new Token Type!")
        	}
        	if controller.IsValid(claims["username"].(string)) {
        		return true, []byte("Token Valid!")
        	} else {
        		return false, []byte("Token Invalid!")
        	}
        } else {
            return false, []byte("Token Invalid!")
        }
    } else {
        return false, []byte("Token Invalid!")
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值