68 lines
1.6 KiB
Go
Raw Normal View History

2024-12-08 16:20:18 +08:00
package api
import (
"github.com/gin-gonic/gin"
"github.com/infraboard/mcube/v2/http/gin/response"
"gitlab.com/go-course-project/go17/vblog/apps/blog"
2024-12-08 18:10:55 +08:00
"gitlab.com/go-course-project/go17/vblog/middleware"
2024-12-08 16:20:18 +08:00
)
2024-12-15 10:13:35 +08:00
// 上传怎么用:
// main.go 组装的时候,传入具体实现, 实现了业务的 插件化
// 访问我们mock测试, 有助于构造 小规模的单元环境
func NewBlogApiHandler(blogImpl blog.Service) *BlogApiHandler {
2024-12-08 17:00:22 +08:00
return &BlogApiHandler{
2024-12-15 10:13:35 +08:00
blog: blogImpl,
2024-12-08 17:00:22 +08:00
}
}
2024-12-08 16:20:18 +08:00
type BlogApiHandler struct {
blog blog.Service
}
2024-12-08 17:00:22 +08:00
// 提供注册功能, 提供一个Group
// book := server.Group("/api/tokens")
func (h *BlogApiHandler) Registry(r *gin.Engine) {
2024-12-08 17:31:55 +08:00
router := r.Group("/vblog/api/v1/blogs")
2024-12-08 18:10:55 +08:00
router.Use(middleware.Auth)
2024-12-08 17:00:22 +08:00
router.POST("", h.CreateBlog)
router.GET("", h.QueryBlog)
}
2024-12-08 16:20:18 +08:00
// BODY
func (h *BlogApiHandler) CreateBlog(ctx *gin.Context) {
in := &blog.CreateBlogRequest{}
if err := ctx.BindJSON(in); err != nil {
response.Failed(ctx, err)
return
}
ins, err := h.blog.CreateBlog(ctx.Request.Context(), in)
if err != nil {
response.Failed(ctx, err)
return
}
response.Success(ctx, ins)
}
func (h *BlogApiHandler) QueryBlog(ctx *gin.Context) {
in := blog.NewQueryBlogRequest()
// GET /search?name=John&age=30&country=USA
// type SearchQuery struct {
// Name string `form:"name"`
// Age int `form:"age"`
// Country string `form:"country"`
// }
if err := ctx.BindQuery(in); err != nil {
response.Failed(ctx, err)
return
}
in.SetTag(ctx.Query("tag"))
ins, err := h.blog.QueryBlog(ctx.Request.Context(), in)
if err != nil {
response.Failed(ctx, err)
return
}
response.Success(ctx, ins)
}