4

Cơ bản Routing với Golang

đăng cách đây 10 tháng

Chắc hẳn mọi người đều quá quen thuộc với routing, và trong bài viết này mình sẽ không nhắc nhiều về khái niêm của nó. Chúng ta sẽ đi thẳng vào thực tế cơ bản sử dụng package: gorilla/mux để xử lý các routes quy định sẵn cùng các GET/POST handlers.

Cài đặt gorilla/mux

Đây là package phù hợp với bộ HTTP router mặc định từ Go. Nó cũng tuân thủ việc xử lý function yêu cầu cơ bản:

Sử dụng `go get` để install các packages từ Github:

Tạo router

Đầu tiên cần tạo một router mới. Đây cũng chính là main router cho ứng dụng web của bạn. Nó sẽ nhận connections và chuyển các requests đến các handlers mà bạn đã đăng ký trước đó.

Đăng ký request handler

Sau khi đã xây dựng một new router. Tiếp theo bạn cần đăng ký những handlers để xử lý các request yêu cầu. Sự khác biệt ở package này là khi xưa bạn phải gọi:

còn bây giờ thì bạn chỉ việc gọi HandleFunc() ngay trên chính router của bạn:

URL Parameters

Sức mạnh lớn nhất thấy được ở package này là việc trích xuất các segments từ một request URL. Cho ví dụ, đây là một URL:

Tại đây có 2 cái segments dynamic:

  • Book title slug (codefun-backend)
  • Page (10)

Vậy mình sẽ xử lý đơn giản để có 2 vị trí segments đó như sau:

Cuối cùng, để lấy dữ liệu từ các segments này thì sao? Chúng ta dùng function được cung cấp sẵn mux.Vars(r), nó sẽ lấy http.Request như một tham số đầu vào và return về một cái map. Từ đó muốn lấy giá trị nào cũng quá dễ dàng.

Setting HTTP server

Tại đây ta dùng http.ListenAndServe(":80", nil), tuy nhiên nil ở đây là gì? Đó chính là việc dùng default router của package net/http. Do đó để đảm bảo không dùng default này, cứ cho nó trỏ thẳng vào cái router bạn đã tạo.

Demo Code

Đoạn code sau giúp bạn test được package cơ bản này:

Một số features khác

Methods

Sử dụng các methods tương ứng với các funcs đã đăng ký:

Hostname

Các funcs đăng ký sử dụng cùng các host và subdomain cụ thể

Schemes

Path Prefixes & Subrouters

✧ ✧ ✧

Cuối cùng, hi vọng bài viết giúp các bạn nắm được những cơ bản về package gorilla/mux cũng như việc routing cơ bản với nó khi xử lý các api theo yêu cầu của dự án.

#golang#programming#webserver#backend
4
0
...