1. 各种数据格式的响应

  • json、结构体、XML、YAML类似于java的properties、ProtoBuf
  1. package main
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/gin-gonic/gin/testdata/protoexample"
  5. )
  6. // 多种响应方式
  7. func main() {
  8. // 1.创建路由
  9. // 默认使用了2个中间件Logger(), Recovery()
  10. r := gin.Default()
  11. // 1.json
  12. r.GET("/someJSON", func(c *gin.Context) {
  13. c.JSON(200, gin.H{"message": "someJSON", "status": 200})
  14. })
  15. // 2. 结构体响应
  16. r.GET("/someStruct", func(c *gin.Context) {
  17. var msg struct {
  18. Name string
  19. Message string
  20. Number int
  21. }
  22. msg.Name = "root"
  23. msg.Message = "message"
  24. msg.Number = 123
  25. c.JSON(200, msg)
  26. })
  27. // 3.XML
  28. r.GET("/someXML", func(c *gin.Context) {
  29. c.XML(200, gin.H{"message": "abc"})
  30. })
  31. // 4.YAML响应
  32. r.GET("/someYAML", func(c *gin.Context) {
  33. c.YAML(200, gin.H{"name": "zhangsan"})
  34. })
  35. // 5.protobuf格式,谷歌开发的高效存储读取的工具
  36. // 数组?切片?如果自己构建一个传输格式,应该是什么格式?
  37. r.GET("/someProtoBuf", func(c *gin.Context) {
  38. reps := []int64{int64(1), int64(2)}
  39. // 定义数据
  40. label := "label"
  41. // 传protobuf格式数据
  42. data := &protoexample.Test{
  43. Label: &label,
  44. Reps: reps,
  45. }
  46. c.ProtoBuf(200, data)
  47. })
  48. r.Run(":8000")
  49. }