Cách lấy dữ liệu JSON từ API bằng Golang
Bài viết này hướng dẫn cách lấy dữ liệu JSON từ API sử dụng ngôn ngữ lập trình Golang, giúp bạn hiểu rõ hơn về cách tương tác với các dịch vụ web.
Trong bài viết này, chúng ta sẽ sử dụng gói net/http
để gửi yêu cầu GET đến một API và xử lý dữ liệu JSON trả về. Đoạn mã sẽ minh họa cách thực hiện điều này một cách rõ ràng và chi tiết.
package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
// Địa chỉ API
url := "https://api.example.com/data"
// Gửi yêu cầu GET
response, err := http.Get(url)
if err != nil {
fmt.Println("Lỗi khi gửi yêu cầu:", err)
return
}
defer response.Body.Close()
// Kiểm tra mã trạng thái
if response.StatusCode == 200 {
var data map[string]interface{}
// Giải mã dữ liệu JSON
if err := json.NewDecoder(response.Body).Decode(&data); err != nil {
fmt.Println("Lỗi khi giải mã dữ liệu:", err)
return
}
fmt.Println(data)
} else {
fmt.Printf("Lỗi: %d\n", response.StatusCode)
}
}
Giải thích chi tiết từng dòng code
package main
: Khai báo package chính của chương trình.import (...)
: Nhập các gói cần thiết, bao gồmencoding/json
để làm việc với JSON vànet/http
để gửi yêu cầu HTTP.url := "https://api.example.com/data"
: Đặt biếnurl
với địa chỉ của API mà bạn muốn truy cập.response, err := http.Get(url)
: Gửi yêu cầu GET tới API và lưu trữ phản hồi vào biếnresponse
, đồng thời kiểm tra lỗi.defer response.Body.Close()
: Đảm bảo rằng body của phản hồi sẽ được đóng khi hàm kết thúc.if response.StatusCode == 200
: Kiểm tra xem yêu cầu có thành công không (mã trạng thái 200 cho biết thành công).var data map[string]interface{}
: Khai báo biếndata
để lưu trữ dữ liệu JSON.if err := json.NewDecoder(response.Body).Decode(&data); err != nil
: Giải mã dữ liệu JSON từ body của phản hồi vào biếndata
, đồng thời kiểm tra lỗi.fmt.Println(data)
: In dữ liệu ra màn hình.else: fmt.Printf("Lỗi: %d\n", response.StatusCode)
: Nếu có lỗi, in ra mã lỗi để kiểm tra.
Yêu cầu hệ thống
- Phiên bản Golang: 1.12 trở lên
Cách cài đặt các thư viện để chạy được đoạn mã Golang trên
Bạn không cần cài đặt thư viện bên ngoài nào vì gói net/http
và encoding/json
là các gói chuẩn có sẵn trong Golang.
Lời khuyên
- Đảm bảo bạn đã hiểu cách hoạt động của API mà bạn đang gọi.
- Kiểm tra tài liệu của API để biết cách sử dụng và các tham số cần thiết.