Iris 這個在 go 語言上地表最快的網頁框架-iris 安裝

iris

截止目前的文章已經將 go 語言的內容說明了五成左右了,。接下來開始要進入 iris 這個框架的內容,所以今天這篇先來個 iris 的安裝以及初體驗。

iris 安裝

本篇主旨在於協助大家配置好 iris 的環境,所以內容分成兩部分,其一是協助安裝、其二是驗證安裝的狀況是否可以開發,接下來先協助大家安裝。

iris 安裝方式

相信有看過前一篇文章的讀者們所缺的是 iris 的程式倉,不過可能還是會有讀者遇到問題,總之今天這篇就帶大家準備好 iris 的環境。

首先先準備好資料夾結構,這裡可以到project layout下載資料結構,接下來在該專案目錄執行以下指令

go mod init [projectName]
go get github.com/kataras/iris/v12@master
go mod vender

相信經過執行這命令已經安裝好第三方函式庫,接下來要寫些 iris 的程式碼確定安裝完成。

iris 初體驗

再經過上述步驟相信大家已經安裝好 iris的函式庫,接下來要確認環境是否安裝完整就是先在專案的 cmd 下新增一個 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)
    // TIP: negotiate the response between server's prioritizes
    // and client's requirements, instead of ctx.JSON:
    // ctx.Negotiation().JSON().MsgPack().Protobuf()
    // ctx.Negotiate(books)
}

func create(ctx iris.Context) {
    var b Book
    err := ctx.ReadJSON(&b)
    // TIP: use ctx.ReadBody(&b) to bind
    // any type of incoming data instead.
    if err != nil {
        ctx.StopWithProblem(iris.StatusBadRequest, iris.NewProblem().
            Title("Book creation failure").DetailErr(err))
        // TIP: use ctx.StopWithError(code, err) when only
        // plain text responses are expected on errors.
        return
    }

    println("Received Book: " + b.Title)

    ctx.StatusCode(iris.StatusCreated)
}

上面例子是來自於 iris document 這是一個基本的api 接口,接下來執行以下命令即可

go run ./cmd/main.go

經過執行這命令相信大家的本機應該已經執行起一個api服務了。

結論

今天這篇先協助大家配置好 iris 的環境,接下來要開始進入 iris 的內容了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *