Blog增、查
Entity
- 新建文件夹
entity
- 新建文件
entity/blog-entity.go
package entity type BlogEntity struct { Title string Description string URL string }
- 绑定json格式
package entity type BlogEntity struct { Title string `json:"title"` Description string `json:"description"` URL string `json:"url"` }
Service
- 新建文件夹
service
- 新建文件
service/blog-service
package service import "learn-gin/entity" type BlogService interface { FindAll() []entity.BlogEntity Save(entity.BlogEntity) entity.BlogEntity } type blogService struct { blogs []entity.BlogEntity } func New() BlogService { return &blogService{} } func (bs *blogService) FindAll() []entity.BlogEntity { return bs.blogs } func (bs *blogService) Save(blog entity.BlogEntity) entity.BlogEntity { bs.blogs = append(bs.blogs, blog) return blog }
Controller
- 新建文件夹
controller
- 新建文件
controller/blog-controller.go
package controller import ( "learn-gin/entity" "learn-gin/service" "github.com/gin-gonic/gin" ) type BlogController interface { FindAll() []entity.BlogEntity Save(*gin.Context) entity.BlogEntity } type blogController struct { bs service.BlogService } func New(bs service.BlogService) BlogController { return &blogController{ bs: bs, } } func (bc *blogController) FindAll() []entity.BlogEntity { return bc.bs.FindAll() } func (bc *blogController) Save(c *gin.Context) entity.BlogEntity { var blog entity.BlogEntity c.BindJSON(&blog) bc.bs.Save(blog) return blog }
- 修改
serve.go
package main import ( "learn-gin/controller" "learn-gin/service" "net/http" "github.com/gin-gonic/gin" ) var ( blogService service.BlogService = service.New() blogController controller.BlogController = controller.New(blogService) ) func main() { server := gin.Default() // 用默认的服务 server.GET("blogs", func(c *gin.Context) { c.JSON(http.StatusOK, blogController.FindAll()) }) server.POST("blogs", func(c *gin.Context) { c.JSON(http.StatusCreated, blogController.Save(c)) }) server.Run(":8080") //启动服务端口,端口参数可选 }
- 启动
go run server.go
- 测试(postman)
GET - localhost:8080/blogs PST - localhost:8080/blogs