这是一个开发中的版本。敬请关注即将发布的版本 v12.2.0。如果想使用稳定版本,请查看 v12.1.8 分支 。
立即尝试官方的Iris命令行工具!
Iris 是基于 Go 编写的一个快速,简单但功能齐全且非常高效的 Web 框架。
它为您的下一个网站或 API 提供了一个非常富有表现力且易于使用的基础。
看看 其他人如何评价 Iris,同时欢迎各位为此开源项目点亮 star。
# 安装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。
如果您发现在 Iris 存在安全漏洞,请发送电子邮件至 iris-go@outlook.com。所有安全漏洞将会得到及时解决。
就像Go语言的协议一样,此项目也采用 BSD 3-clause license。
项目名称 "Iris" 的灵感来自于希腊神话。