Chào mừng các bạn đến với series bài viết về lập trình Web Back-End bằng ngôn ngữ Golang, sử dụng IRIS framework

Trong series này, tôi sẽ hướng dẫn các bạn tạo một Web server hoàn chỉnh với đầy đủ các tính năng như routing, middleware, session, cookie, authentication, subdomain, đọc query parameters, cache, serve file tĩnh, web socket, ...

1. Giới thiệu và cài đặt

1.1 Về ngôn ngữ Golang

Golang là một ngôn ngữ lập trình được Google phát triển năm 2009, phục vụ cho hệ thống dịch vụ nội bộ. Nhờ những đặc điểm tin gọn, đơn giản, chạy nhanh, tốn ít tài nguyên, mà Golang nhanh chóng được ứng dụng rộng rãi ra khắp thế giới.
Ngày hôm nay, bất kỳ hệ thống nào chạy trên Docker, có nghĩa là hệ thống đó đang sử dụng 1 phần sức mạnh của Golang bởi Docker được viết bởi Golang.

Nhiều tập đoàn, start up công nghệ: Uber, Lyft, Medium, Alibaba, ByteDance (ứng dụng TikTok), Klook (trang bán tour du lịch số 1 TQ), Go-Jek (dịch vụ đặt xe lớn nhất Indonesia), Sendo, Lazada, VNG, Tiki tận dụng Golang triệt để để xây dựng kiến trúc microservice có khả năng chịu tải lớn, chống lỗi tốt và phân bố trên nhiều vùng địa lý. Xem chi tiết danh sách các công ty trên thế giới sử dụng Golang như thế nào

1.2 Về IRIS framework

IRIS là một framework viết bằng Golang, được sử dụng để lập trình web server. 

Link mã nguồn: https://github.com/kataras/iris

Website chính thức: https://iris-go.com/ 

1.3 Download và cài đặt Iris:

go get github.com/kataras/iris

Update lên phiên bản mới:

go get -u github.com/kataras/iris

Sau khi cài đặt xong IRIS, chúng ta bắt tay ngay vào code một số tính năng web server

2. Thử tạo một web server tối giản

Chúng ta có thể tạo một web server bằng IRIS chỉ với 13 dòng code:

package main

import (
	"github.com/kataras/iris"
)

func main() {
	app := iris.New()
	app.Handle("GET", "/", func(ctx iris.Context) {
		ctx.HTML("Web server chạy bằng IRIS") 
    }) 
    app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed)) 
}

Khởi tạo web server tại cổng 8080 bằng lệnh sau:

go run main.go

Truy cập vào localhost:8080 cho ra kết quả:

Tham khảo code demo: https://github.com/handuy/golang_web_techmaster/blob/master/iris-hello-world/main.go

3. Tạo một middleware

Khi client gửi GET request đến đường dẫn "/", trước khi chạy hàm xử lý, web server sẽ log thời gian nhận request ra màn hình terminal:

package main

import (
	"time"

	"github.com/kataras/iris"
)

func myMiddleware(ctx iris.Context) {
	ctx.Application().Logger().Infof("Thời gian nhận request: %s", time.Now())
	ctx.Next()
}

func main() {
	app := iris.New()
	app.Use(myMiddleware)
	app.Handle("GET", "/", func(ctx iris.Context) {
		ctx.HTML("Web server chạy bằng IRIS") 
    }) 
    app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed)) 
}

Khởi tạo web server tại cổng 8080:

go run main.go

Khi client gửi GET request đến "/", thu được kết quả:

Browser
Browser
Termnail hiển thị thời gian nhận request
Termnail hiển thị thời gian nhận request

Tham khảo code demo: https://github.com/handuy/golang_web_techmaster/tree/master/iris-middleware

4. Trả về file HTML

Thay vì viết HTML dưới dạng chuỗi string, ta trả về hẳn một file HTML hoàn chỉnh:

package main

import "github.com/kataras/iris"

func main() {
	app := iris.New()
	app.RegisterView(iris.HTML("./view", ".html"))
	app.Get("/", func(ctx iris.Context) {
		ctx.View("index.html")
	})
	app.Run(iris.Addr(":8080"))
}

Thư mục view chứa file index.html trả về cho client

Tham khảo code demo: https://github.com/handuy/golang_web_techmaster/tree/master/iris-view-html

Chạy web server ở cổng 8080:

go run main.go

Mở trình duyệt tại địa chỉ localhost:8080 cho kết quả:

Trong phần tiếp theo, chúng ta sẽ tìm hiểu về cách tạo các route trong IRIS

Nguồn tham khảo:

https://github.com/kataras/iris/wiki/Installation

https://github.com/kataras/iris/wiki/Getting-started


Sau đây là 1 phút dành cho quảng cáo :D

Techmaster đang có Lộ trình đào tạo Full-Stack Developer trong 8 tháng, cam kết việc làm cho các bạn học viên tốt nghiệp. Học viên đã tốt nghiệp sau 2 tháng nếu vẫn không xin được việc thì sẽ được hoàn lại 100% học phí.

Nếu các bạn chỉ quan tâm đến lập trình Web Back-End và muốn học một khóa ngắn gọn, cô đọng, có nhiều ví dụ thực tế có thể áp dụng được ngay, các bạn có thể tham khảo khóa Xây dựng ứng dụng Web bán hàng bằng Golang