导读
本套笔记是为了学习过其他语言框架,想要快速掌握gin框架推行的一套笔记。 虽然为了青训营而制作的一套笔记,但其他想要学go的程序员也可以通过这个上手go世界,后续会带你快速上手gorm,学完这两个之后,简体版抖音基本上就可以独立完成了。
首先,首先新建一个简单入门的后端,监听8080端口
import (
"github.com/gin-gonic/gin"//引入框架
"net/http"
)
func main() {
router := gin.Default()//设置路由
router.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "Hello World")
})//设置请求路径和响应信息
router.Run(":8000") //设置运行接口
}
可以看到,和springboot的差别很大。
路由
在 Go 中,路由(Routing)是指将收到的 HTTP 请求映射到相应的处理程序或处理函数的过程。路由确定了请求的路径和方法,并将其分发给正确的处理程序来处理该请求。go中的路由是类似router.get这样的,而springboot中则是使用@Controller和@GetMapping实现。go这样写法有个好处就是可以集中将路由写在一个.go文件中。 类似这样
func InitRouter(r *gin.Engine) {
r.Static("/static", "./static")
//apiRouter := r.Group("/douyin")
r.GET("/douyin/feed/", Base.Feed)
r.GET("/douyin/publish/list/", Base.PublishList)
r.GET("/douyin/user/", Base.UserInfo)
r.POST("/douyin/user/login/", Base.Login)
r.POST("/douyin/user/register/", Base.Register)
r.POST("/douyin/publish/action/", Base.UploadVideo)
r.GET("/douyin/favorite/list/", Interaction.Favorite)
r.POST("/douyin/favorite/action/", Interaction.Like)
r.POST("/douyin/comment/action/", Interaction.Conmment)
r.GET("/douyin/comment/list/", Interaction.CommentList)
r.POST("/douyin/relation/action/", Socialize.Follow)
r.GET("/douyin/relation/follow/list/", Socialize.FollowList)
r.GET("/douyin/relation/follower/list/", Socialize.FanList)
r.GET("/douyin/relation/friend/list/", Socialize.FriendList)
r.GET("/douyin/message/chat/", Socialize.MessageList)
r.POST("/douyin/message/action/", Socialize.AddMessage)
}
自定义响应
响应json
c.JSON(http.StatusOK, gin.H{"Message": "返回成功", "status": "ok"})
可以将响应内容写入gin.h里面然后返回。
自定义响应状态码
c.JSON(http.StatusOK)
http里面可选的返回参数
从控制器中获取文件
func UploadVideo(c *gin.Context) {
file, err := c.FormFile("data")
c.JSON(http.StatusOK)
}
上面是从控制器中获取Form表单数据
重定向
当客户端访问这个路径之后将会把他自动转到别的路径。
import (
"github.com/gin-gonic/gin" //引入框架
"net/http"
)
func main() {
router := gin.Default() //设置路由
router.GET("/redirect", func(c *gin.Context) {
//支持内部和外部的重定向
c.Redirect(http.StatusMovedPermanently, "http://www.biying.com/")
})
router.Run() //设置运行接口
}
文件响应
文件响应(File Response)是指在Web开发中,服务器向客户端返回的一个文件作为响应的内容。当客户端发送请求后,服务器可以将一个文件作为响应内容发送给客户端,客户端可以选择保存、下载或直接展示该文件。 一般情况下,文件响应都是写在静态路径上面。
r.Static("/static", "./static")
gin.Static()
第一个参数是所访问资源的URL,第二个参数是资源存放在服务器上的路径, 访问文件资源时指定的url会被映射到服务器上真正存放静态资源的路径上,下面是我项目代码中的使用实例
gin.StaticFS()
先说用法:和gin.Static()一样,第一个参数是请求文件资源的URL,第二个参数是文件系统,可以是http.Dir()和gin.Dir()
StaticFile注册单个路由以便为本地文件系统的单个文件提供服务StaticFileFS与StaticFile一样工作,但可以使用自定义的http.FileSystem