数据返回类型(write rest)

目录结构

主目录writeRest

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "encoding/xml"
  4. "github.com/kataras/iris"
  5. "github.com/kataras/iris/context"
  6. )
  7. //用户绑定结构
  8. type User struct {
  9. Firstname string `json:"firstname"`
  10. Lastname string `json:"lastname"`
  11. City string `json:"city"`
  12. Age int `json:"age"`
  13. }
  14. // ExampleXML只是一个要查看的测试结构,表示xml内容类型
  15. type ExampleXML struct {
  16. XMLName xml.Name `xml:"example"`
  17. One string `xml:"one,attr"`
  18. Two string `xml:"two,attr"`
  19. }
  20. func main() {
  21. app := iris.New()
  22. // 读取
  23. app.Post("/decode", func(ctx iris.Context) {
  24. // 参考 /http_request/read-json/main.go
  25. var user User
  26. ctx.ReadJSON(&user)
  27. ctx.Writef("%s %s is %d years old and comes from %s!", user.Firstname, user.Lastname, user.Age, user.City)
  28. })
  29. // Write
  30. app.Get("/encode", func(ctx iris.Context) {
  31. peter := User{
  32. Firstname: "John",
  33. Lastname: "Doe",
  34. City: "Neither FBI knows!!!",
  35. Age: 25,
  36. }
  37. //手动设置内容类型: ctx.ContentType("application/javascript")
  38. ctx.JSON(peter)
  39. })
  40. //其他内容类型
  41. app.Get("/binary", func(ctx iris.Context) {
  42. //当您想要强制下载原始字节内容时有用下载文件
  43. ctx.Binary([]byte("Some binary data here."))
  44. })
  45. app.Get("/text", func(ctx iris.Context) {
  46. ctx.Text("Plain text here")
  47. })
  48. app.Get("/json", func(ctx iris.Context) {
  49. ctx.JSON(map[string]string{"hello": "json"}) // or myjsonStruct{hello:"json}
  50. })
  51. app.Get("/jsonp", func(ctx iris.Context) {
  52. ctx.JSONP(map[string]string{"hello": "jsonp"}, context.JSONP{Callback: "callbackName"})
  53. })
  54. app.Get("/xml", func(ctx iris.Context) {
  55. ctx.XML(ExampleXML{One: "hello", Two: "xml"}) // or iris.Map{"One":"hello"...}
  56. })
  57. app.Get("/markdown", func(ctx iris.Context) {
  58. ctx.Markdown([]byte("# Hello Dynamic Markdown -- iris"))
  59. })
  60. // http://localhost:8080/decode
  61. // http://localhost:8080/encode
  62. // http://localhost:8080/binary
  63. // http://localhost:8080/text
  64. // http://localhost:8080/json
  65. // http://localhost:8080/jsonp
  66. // http://localhost:8080/xml
  67. // http://localhost:8080/markdown
  68. //`iris.WithOptimizations`是一个可选的配置器,
  69. //如果传递给`Run`那么它将确保应用程序,尽快响应客户端。
  70. // `iris.WithoutServerError` 是一个可选的配置器,
  71. //如果传递给`Run`那么它不会将传递的错误,实际的服务器错误打印。
  72. app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed), iris.WithOptimizations)
  73. }