进阶 www.iris-go.com 2026-10-20 02:39:14 · 14 阅读

第12章 快速上手 Iris Web 框架

快速上手 本指南将指导你通过创建一个简单的 Web 应用程序,快速入门 Iris。 基础应用 新建一个名为 main.go 的文件: gopackage 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 示例。 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)) // 提示:当仅期望在出错时返回纯文本响应时, // 请使用 ctx.StopWithError(code, err)。 return } println("Received Book: " + b.Title) ctx.StatusCode(iris.StatusCreated) }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 MVC 示例 以下是使用 MVC 模式的相同示例: ```go import "github.com/kataras/iris/v12/mvc" func main() { app := iris.New() booksAPI := app.Party("/books") m := mvc.New(booksAPI) m.Handle(new(BookController)) app.Listen(":8080") } 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 } 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
测试 API 运行你的 Iris Web 服务器: ```sh $ go run main.go > Now listening on: http://localhost:8080 > Application started. Press CTRL+C to shut down. 1
2
3
获取书籍列表 ```sh $ curl --header 'Accept-Encoding:gzip' http://localhost:8080/books [ { "title": "Mastering Concurrency in Go" }, { "title": "Go Design Patterns" }, { "title": "Black Hat Go" } ] 1
2
3
4
5
6
7
8
9
10
11
12
13
创建书籍 ```sh $ 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 1
2
3
4
5
6
7
错误响应示例 ```sh $ 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", } 1
2
3
4
5
6
7
8
9

评论 (0)