go bson转换成json_Go实战--echo、Mongo、JWT搭建REST API

本文介绍了如何使用Go的Echo框架、MongoDB作为数据库和JWT进行身份验证来构建RESTful API。内容涉及用户模型、处理器、主函数及测试,详细讲解了Go中struct标签、HTTP处理、时间包、strconv包的使用,并提供了测试用例和命令示例。
摘要由CSDN通过智能技术生成

生命不止,继续go go go !!!

之前介绍过golang中restful api的博客,是使用redis作为持久化,httprouter作为框架:
Go实战–通过httprouter和redis框架搭建restful api服务(github.com/julienschmidt/httprouter)

今天,继续echo框架,这次加入mongodb作为持久化存储,使用jwt进行验证,来搭建一套rest api,类似Twitter。

其中,很多知识点之前都有介绍过:
关于golang中使用mongodb科技参考:
Go实战–golang使用ssl连接MongoDB(mgo)

Go实战–golang中使用MongoDB(mgo)

关于golang中的使用jwt(JSON Web Token):
Go实战–golang中使用JWT(JSON Web Token)

代码结构:

./model   post.go   user.go./handler   handler.go   post.go   user.gomain.go12345678

model

这里没有什么好说的,就是建立model,需要注意的就是golang中struct中的标签。
一个用户user,一个邮箱post。

user.go

package modelimport (    "gopkg.in/mgo.v2/bson")type (    User struct {        ID        bson.ObjectId `json:"id" bson:"_id,omitempty"`        Email     string        `json:"email" bson:"email"`        Password  string        `json:"password,omitempty" bson:"password"`        Token     string        `json:"token,omitempty" bson:"-"`        Followers []string      `json:"followers,omitempty" bson:"followers,omitempty"`    })123456789101112131415

post.go

package modelimport (    "gopkg.in/mgo.v2/bson")type (    Post struct {        ID      bson.ObjectId `json:"id" bson:"_id,omitempty"`        To      string        `json:"to" bson:"to"`        From    string        `json:"from" bson:"from"`        Message string        `json:"message" bson:"message"`    })123456789101112131415

handler

handler.go
handler中提出出来的公共部分。

package handlerimport (    "gopkg.in/mgo.v2")type (    Handler struct {        DB *mgo.Session    })const (    // Key (Should come from somewhere else).    Key = "secret")1234567891011121314151617

post.go
post中加入两个功能,一个创建post,一个拉取post。
关于”net/http”可以参考:
Go语言学习之net/http包(The way to go)
关于”strconv”可以参考:
Go语言学习之strconv包(The way to go)

package handlerimport (    "go_echo_examples/twitter/model"    "net/http"    "strconv"    "github.com/labstack/echo"    "gopkg.in/mgo.v2"    "gopkg.in/mgo.v2/bson")func (h *Handler) CreatePost(c echo.Context) (err er
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值