![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
风铃草博客系统
文章平均质量分 77
百里守约学编程
你会的越多,不会的越多。
展开
-
19.创建帖子
这里要稍微注意的是:需要登录后才可以发表帖子,所以需要用到我们之前写的鉴权中间件。为了文档看起来更清晰,我这里将中间件的代码和从。中能取出用户信息,说明鉴权成功,否则失败。解析成功后,便会将用户信息存入。可以看到是创建成功的。原创 2024-03-13 22:46:09 · 447 阅读 · 0 评论 -
18. 查看帖子详情
【代码】18. 查看帖子详情。原创 2024-03-13 22:21:48 · 431 阅读 · 0 评论 -
17.获取帖子列表
一样了,需要返回作者名字和社区详情,所以我们还需要额外定义一个。开发GetPostListHandler。由于返回给前端的字段不完全和。原创 2024-03-13 21:44:12 · 458 阅读 · 0 评论 -
16. 获取社区详情
登录之后,我们可以发表帖子,但是发表帖子之前,需要先选择一个频道,可以理解是社区分类或者标签分类。这个数据来源是从服务端获取的,本节我们就实现这个功能。这是一个最基本的CRUD功能,直接上代码吧,其中dev.yaml和main.go文件有改动是因为我想换为开发环境运行,这样可以直接调试以及观察控制台日志。原创 2024-03-10 22:53:50 · 409 阅读 · 0 评论 -
15. jwt认证中间件
此时我们很容易就想到了中间件,定义好鉴权中间件,对于需要鉴权的路由,加上这个中间件即可。对于一些需要权限校验的请求,我们就需要验证这个。,是因为后续其他接口需要从这个上下文中获取。用了一个全局变量,而不是一个写死的字符串。时也要用到这个变量,所以作为全局的较好。层入口要做的事情,可能有很多接口需要从。在上一篇登录功能的实现中,我们使用了。前端在访问后续请求时,可以带上这个。其中需要说明的一点是,将当前请求的。作为鉴权组件,其中登录后会颁发。直接上代码吧,注释非常清晰。,所以可以封装一个函数。原创 2024-03-10 17:48:38 · 780 阅读 · 0 评论 -
14. 登录功能实现
有了基本脚手架之后,我们在上节很容易的就完成了注册功能。登录功能与之类似,按部就班实现即可。登录后,期望在一段时间内不需要继续登录也能访问其他一些需要登录的接口,这时候就涉及到鉴权啦,我们可以使用jwt实现。原创 2024-03-10 17:10:07 · 873 阅读 · 0 评论 -
13. 用户注册功能实现
由于我们的项目是非常简单的上入门项目,所以并不会用到DDD等复杂的目录设计和管理,而是用了最基本的MVC三层结构。负责校验用户名是否已经存在,若不存在,则生成唯一的用户ID,注册用户。这里首先写注册逻辑,后续的登录逻辑也会在这个文件中实现。校验用户名是否已经存在、对密码加密、保存新注册的用户。定义与DB交互时可能出现的相关错误码。添加路由,使用分组管理。原创 2024-03-09 22:26:55 · 592 阅读 · 0 评论 -
12. 建立用户表并使用雪花算法生成用户ID
雪花算法是。原创 2024-03-09 21:16:16 · 1143 阅读 · 0 评论 -
11. 搭建较通用的GoWeb开发脚手架
由于我们后续是要将配置加载到一个全局结构体对象中,然后各个地方使用这个全局变量读取配置的,所以很自然的想到,我们应该定义对应的配置结构体,并提供一个全局变量以及相应的初始化函数。文件,我们如何放到了其他目录下去执行,代码中写死配置文件读取目录的话可能就读不到了,因为路径不对了。随后我们传入配置文件路径执行,可以看到启动后,没有报错且光标一直在闪烁,便是项目启动成功且在。原因是项目运行时的基准目录,是以执行运行程序所在目录为准的,也就是说,编译后产生了。文件,毕竟它是整个程序的入口,我们的。原创 2024-03-09 20:21:44 · 1656 阅读 · 2 评论 -
10. Go使用validator库进行参数校验
上面的错误提示看起来是可以了,但是还是差点意思,首先是错误提示中的字段并不是请求中使用的字段,例如:RePassword是我们后端定义的结构体中的字段名,而请求中使用的是re_password字段。如何使错误提示中的字段使用自定义的名称,例如json tag指定的值呢?只需要在初始化翻译器的时候像下面一样添加一个获取json tag的自定义方法即可。// InitTrans 初始化翻译器// 修改gin框架中的Validator引擎属性,实现自定制ok {原创 2024-03-09 17:42:53 · 1167 阅读 · 0 评论 -
9. Go语言配置管理神器Viper的基本使用
Viper将读取从Key/Value存储(例如etcd或Consul)中的路径检索到的配置字符串(如JSON、TOML、YAML、HCL、envfile和Java properties格式)。需要重新启动服务器以使配置生效的日子已经一去不复返了,viper驱动的应用程序可以在运行时读取配置文件的更新,而不会错过任何消息。默认情况下,空环境变量被认为是未设置的,并将返回到下一个配置源。Viper使用crypt从K/V存储中检索配置,这意味着如果你有正确的gpg密匙,你可以将配置值加密存储并自动解密。原创 2024-03-07 20:00:10 · 1684 阅读 · 0 评论 -
8. Go实现Gin服务优雅关机与重启
优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。注:如果是执行Ctrl+C关闭服务端时,仍会强制结束进程导致正在访问的请求出现问题。,当接收到中断信号时,服务器会进入优雅关闭流程,即先关闭。秒钟内没有关闭完所有连接,函数会返回错误。并等待所有连接关闭。秒钟,最后退出程序。函数,它会优雅地关闭。原创 2024-03-06 21:15:23 · 662 阅读 · 0 评论 -
7.使用os.Args或flag解析命令行参数
有以下两种常用的定义命令行。原创 2024-03-06 21:04:29 · 991 阅读 · 0 评论 -
6. Gin集成redis
作为后端研发,Redis是无处不在的,那么go操作Redis也是每位后端研发应该掌握的基本技能。go-redis官方文档。原创 2024-03-06 20:38:40 · 1268 阅读 · 0 评论 -
5. gin集成Gorm
本节主要介绍如何使用gin集成gorm,并完成用户的创建、修改、删除、查询等功能。原创 2024-03-06 20:14:47 · 679 阅读 · 0 评论 -
4. 使用zap替换gin框架默认的日志并配置日志切割
本文将介绍在基于gin框架开发的项目中如何配置并使用zap来接收gin框架默认的日志以及如何配置日志切割。我们在基于gin框架开发项目时通常都会选择使用专业的日志库来记录项目中的日志,go语言常用的日志库有zap、logrus等。我们该项目中使用zap。我们该如何在日志中记录gin框架本身输出的那些日志呢?原创 2024-03-06 18:46:52 · 611 阅读 · 0 评论 -
3. 在Go语言项目中使用Zap日志库
在许多Go能够将事件记录到文件中,而不是应用程序控制台。日志切割:能够根据文件大小、时间或间隔等来切割日志文件。支持不同的日志级别。例如等。能够打印基本信息,如调用文件/函数名和行号,日志时间等。原创 2024-03-06 18:03:44 · 1725 阅读 · 0 评论 -
2. gin中间件注意事项、路由拆分与注册技巧
此外,还有一个可以匹配所有请求方法的Any为没有配置处理函数的路由添加处理程序,默认情况下它返回404代码,下面的代码为没有匹配到路由的请求都返回页面。})原创 2024-03-06 14:55:30 · 1118 阅读 · 0 评论 -
1. Gin框架入门
Gin是基于httprouter开发的Web框架,也是当前Go世界里最流行的Web框架。Gin框架安装与使用下载并安装Ginimport (// 创建一个默认的路由引擎// GET:请求方式;/hello:请求的路径// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数// c.JSON:返回JSON格式的数据",})})// 启动HTTP服务,默认在0.0.0.0:8080启动服务r.Run()将上面的代码保存并编译执行,然后使用浏览器打开就能看到一串JSON字符串。原创 2024-03-06 14:36:14 · 1011 阅读 · 0 评论 -
0.风铃草博客系统介绍
该项目主要是做笔记,学习项目开发技巧、目录结构设计、中间件使用等。原创 2024-03-06 10:50:17 · 426 阅读 · 0 评论