当前位置: 首页 > news >正文

网站备案是一年一次吗短链生成

网站备案是一年一次吗,短链生成,网站制作教程 pdf下载,西安网站建设app建设文章目录 一、建立路由二、开发CreatePostHandler三、编写logic四、编写dao层五、编译测试运行 一、建立路由 这里要稍微注意的是#xff1a;需要登录后才可以发表帖子#xff0c;所以需要用到我们之前写的鉴权中间件。中间件对用户携带的token解析成功后#xff0c;便会将… 文章目录 一、建立路由二、开发CreatePostHandler三、编写logic四、编写dao层五、编译测试运行 一、建立路由 这里要稍微注意的是需要登录后才可以发表帖子所以需要用到我们之前写的鉴权中间件。中间件对用户携带的token解析成功后便会将用户信息存入ctx中我们如果从ctx中能取出用户信息说明鉴权成功否则失败。 router/route.go // 需要登录后才可以发表帖子所以需要鉴权中间件v1.POST(/post, middlewares.JWTAuthMiddleware(), controller.CreatePostHandler)为了文档看起来更清晰我这里将中间件的代码和从ctx中获取用户id的方法再贴一下。 middlewares/auth.go package middlewaresimport (bluebell/constdefbluebell/controllerbluebell/pkg/jwtstringsgithub.com/gin-gonic/gin )// JWTAuthMiddleware 基于JWT的认证中间件 func JWTAuthMiddleware() func(c *gin.Context) {return func(c *gin.Context) {// 客户端携带Token有三种方式 1.放在请求头 2.放在请求体 3.放在URI// 这里假设Token放在Header的Authorization中并使用Bearer开头// Authorization: Bearer xxxxxxx.xxx.xxx / X-TOKEN: xxx.xxx.xx// 这里的具体实现方式要依据你的实际业务情况决定,和前端对其即可authHeader : c.Request.Header.Get(Authorization)if authHeader {controller.ResponseError(c, controller.CodeNeedLogin)c.Abort()return}// 按空格分割parts : strings.SplitN(authHeader, , 2)if !(len(parts) 2 parts[0] Bearer) {controller.ResponseError(c, controller.CodeInvalidToken)c.Abort()return}// parts[1]是获取到的tokenString我们使用之前定义好的解析JWT的函数来解析它mc, err : jwt.ParseToken(parts[1])if err ! nil {controller.ResponseError(c, controller.CodeInvalidToken)c.Abort()return}// 将当前请求的userId信息保存到请求的上下文c上c.Set(constdef.CtxUserIDKey, mc.UserID)c.Next() // 后续的处理请求的函数中 可以用过c.Get(CtxUserIDKey) 来获取当前请求的用户信息} } controller/request.go package controllerimport (bluebell/constdeferrorsstrconvgithub.com/gin-gonic/gin )var ErrorUserNotLogin errors.New(用户未登录)// getCurrentUserID 获取当前登录的用户ID func getCurrentUserID(c *gin.Context) (userID int64, err error) {uid, ok : c.Get(constdef.CtxUserIDKey)if !ok {err ErrorUserNotLoginreturn}userID, ok uid.(int64)if !ok {err ErrorUserNotLoginreturn}return }二、开发CreatePostHandler controller/post.go // CreatePostHandler 创建帖子的处理函数 func CreatePostHandler(c *gin.Context) {// 1. 获取参数及参数的校验//c.ShouldBindJSON() // validator -- binding tagp : new(models.Post)if err : c.ShouldBindJSON(p); err ! nil {zap.L().Debug(c.ShouldBindJSON(p) error, zap.Any(err, err))zap.L().Error(create post with invalid param)ResponseError(c, CodeInvalidParam)return}// 从 c 取到当前发请求的用户的IDuserID, err : getCurrentUserID(c)if err ! nil {ResponseError(c, CodeNeedLogin)return}p.AuthorId userID// 2. 创建帖子if err : logic.CreatePost(p); err ! nil {zap.L().Error(logic.CreatePost(p) failed, zap.Error(err))ResponseError(c, CodeServerBusy)return}// 3. 返回响应ResponseSuccess(c, nil) }三、编写logic logic/post.go package logicimport (bluebell/dao/mysqlbluebell/modelsgo.uber.org/zap )func CreatePost(post *models.Post) error {// 1. 使用雪花算法生成post idpost.PostId snowflake.GenID()// 2. 保存到数据库中err : mysql.CreatePost(post)if err ! nil {return err}return nil }四、编写dao层 mysql/post.go增加获取帖子详情函数 func CreatePost(post *models.Post) error {return db.Create(post).Error }五、编译测试运行 可以看到是创建成功的
http://www.pierceye.com/news/266564/

相关文章:

  • 民宿网站开发方案静态网站源文件下载
  • 绵阳网站建设优化甘肃省安装建设集团公司网站
  • wordpress建站知乎广告设计软件coreldraw教程
  • wordpress注册无法发送邮件保定seo外包服务商
  • 进口外贸网站有哪些wordpress百度统计代码
  • 建筑网站排行国外网站备案流程
  • dw做网站一般是多大的尺寸网站开发运行环境论文
  • 湖北省建设厅政务公开网站聊城开发app公司
  • 石家庄网站建设接单金融软件网站建设公司排名
  • 企企业业网网站站建建设设哪个网站可以做纸箱
  • 国外专门做视频翻译网站吗山西时代网站建设
  • 云南省城乡住房与建设厅网站杭州网站制作平台公司
  • 程序员做网站美工能过关吗深圳品牌折扣店
  • 地产网站设计怎么做网贷网站
  • 公司网站是如何搭建的跨境电商被骗血本无归
  • 品牌网站建设目标vps怎么做多个网站
  • 普陀区建设工程质检网站网站建设 工作方案
  • 三河做网站开发公司虚列成本
  • 网站公司建设网站首页注册资本可以随便填吗
  • 网站做链接的意义是什么意思网站设计与制作
  • 快速开发网站的应用程序网站高中建设工具
  • 备案期间网站可以做竞价吗网站开发四川
  • 盐城网站app建设竣工验收备案查询
  • 河南省建设厅八大员网站相城网页设计
  • 建设电子商务网站要多少钱怎么自己开公司
  • 网站设计分析怎么写5年的室内设计师收入
  • 珠海网站建设服务谷歌关键词排名查询工具
  • 三网站合一系统优化最好的安卓手机
  • 那几个网站可以做h5产品经理培训哪个机构好
  • 吉林市做网站阿里巴巴国际站怎么运营