Iris 是基于 Go 编写的一个快速,简单但功能齐全且非常高效的 Web 框架。
它为您的下一个网站或 API 提供了一个非常富有表现力且易于使用的基础。
看看 其他人如何评价 Iris,同时欢迎各位为此开源项目点亮 。
📖 开始学习 Iris
# 安装Iris:https://github.com/kataras/iris/wiki/Installation $ go get github.com/kataras/iris/v12@master # 假设main.go文件中已存在以下代码 $ cat main.go
package main import "github.com/kataras/iris/v12" func main() { app := iris.New() booksAPI := app.Party("/books") { booksAPI.Use(iris.Compression) // GET: http://localhost:8080/books booksAPI.Get("/", list) // POST: http://localhost:8080/books booksAPI.Post("/", create) } app.Listen(":8080") } // Book example. type Book struct { Title string `json:"title"` } func list(ctx iris.Context) { books := []Book{ {"Mastering Concurrency in Go"}, {"Go Design Patterns"}, {"Black Hat Go"}, } ctx.JSON(books) // 提示: 在服务器优先级和客户端请求中进行响应协商, // 以此来代替 ctx.JSON: // ctx.Negotiation().JSON().MsgPack().Protobuf() // ctx.Negotiate(books) } func create(ctx iris.Context) { var b Book err := ctx.ReadJSON(&b) // 提示: 使用 ctx.ReadBody(&b) 代替,来绑定所有类型的入参 if err != nil { ctx.StopWithProblem(iris.StatusBadRequest, iris.NewProblem(). Title("Book creation failure").DetailErr(err)) // 提示: 如果仅有纯文本(plain text)错误响应, // 可使用 ctx.StopWithError(code, err) return } println("Received Book: " + b.Title) ctx.StatusCode(iris.StatusCreated) }
同样地,在MVC中 :
import "github.com/kataras/iris/v12/mvc"
m := mvc.New(booksAPI) m.Handle(new(BookController))
type BookController struct { /* dependencies */ } // GET: http://localhost:8080/books func (c *BookController) Get() []Book { return []Book{ {"Mastering Concurrency in Go"}, {"Go Design Patterns"}, {"Black Hat Go"}, } } // POST: http://localhost:8080/books func (c *BookController) Post(b Book) int { println("Received Book: " + b.Title) return iris.StatusCreated }
启动 您的 Iris web 服务:
$ go run main.go > Now listening on: http://localhost:8080 > Application started. Press CTRL+C to shut down.
Books 列表查询 :
$ curl --header 'Accept-Encoding:gzip' http://localhost:8080/books [ { "title": "Mastering Concurrency in Go" }, { "title": "Go Design Patterns" }, { "title": "Black Hat Go" } ]
创建 新的Book:
$ curl -i -X POST \ --header 'Content-Encoding:gzip' \ --header 'Content-Type:application/json' \ --data "{\"title\":\"Writing An Interpreter In Go\"}" \ http://localhost:8080/books > HTTP/1.1 201 Created
这是错误响应所展示的样子:
$ curl -X POST --data "{\"title\" \"not valid one\"}" \ http://localhost:8080/books > HTTP/1.1 400 Bad Request { "status": 400, "title": "Book creation failure" "detail": "invalid character '\"' after object key", }
Iris 有完整且详尽的 ,让您可以轻松地使用此框架。
要了解更详细的技术文档,请访问我们的 godocs。如果想要寻找代码示例,您可以到仓库的 ./_examples 子目录下获取。
你喜欢在旅行时阅读吗?
您可以获取PDF版本或在线访问电子图书,并参与到Iris的开发中。
🙌 贡献
我们欢迎您为Iris框架做出贡献!想要知道如何为Iris项目做贡献,请查看[CONTRIBUTING.md](CONTRIBUTING.md)。
🛡 安全漏洞
如果您发现在 Iris 存在安全漏洞,请发送电子邮件至 iris-go@outlook.com。所有安全漏洞将会得到及时解决。
📝 开源协议(License)
就像Go语言的协议一样,此项目也采用 BSD 3-clause license。
项目名称 "Iris" 的灵感来自于希腊神话。