Cách truyền Authentication Header Token khi POST dữ liệu tới API bằng Golang
Hướng dẫn cách truyền Authentication Header Token khi gửi yêu cầu POST dữ liệu tới API bằng Golang. Bài viết này sẽ giúp bạn hiểu cách làm việc với HTTP request, thêm token vào Header để xác thực và gửi dữ liệu tới API.
Bài viết này sẽ trình bày cách gửi yêu cầu POST tới một API bằng Golang, đồng thời truyền Token trong phần Authentication Header để xác thực. Sử dụng http.NewRequest
và http.Client
để gửi dữ liệu cùng với việc đính kèm token trong yêu cầu.
Mã Golang:
package main
import (
"bytes"
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://example.com/api"
token := "Bearer your_token_here"
// Tạo dữ liệu dưới dạng JSON để gửi đi
jsonData := []byte(`{"key": "value"}`)
// Tạo một yêu cầu POST
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
fmt.Println("Error creating request:", err)
return
}
// Đặt Content-Type là JSON và thêm Token vào Header
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", token)
// Sử dụng http.Client để gửi yêu cầu
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error making POST request:", err)
return
}
defer resp.Body.Close()
// Đọc phản hồi từ API
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
// In phản hồi ra màn hình
fmt.Println("Response Body:", string(body))
}
Giải thích chi tiết từng dòng code:
-
url := "https://example.com/api"
: Địa chỉ API mà bạn muốn gửi dữ liệu tới. -
token := "Bearer your_token_here"
: Chuỗi token để xác thực API, thông thường là dưới dạng "Bearer {token}". -
jsonData := []byte(
{"key": "value"})
: Tạo dữ liệu JSON để gửi đi trong yêu cầu POST. -
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
: Tạo yêu cầu HTTP POST với dữ liệu JSON. -
req.Header.Set("Content-Type", "application/json")
: Thiết lập Content-Type cho yêu cầu là JSON. -
req.Header.Set("Authorization", token)
: Thêm Authentication Header Token vào yêu cầu. -
client := &http.Client{}
: Tạo HTTP client để gửi yêu cầu. -
resp, err := client.Do(req)
: Gửi yêu cầu POST tới API. -
body, err := ioutil.ReadAll(resp.Body)
: Đọc phản hồi từ API.
Yêu cầu hệ thống:
- Phiên bản Golang 1.16 trở lên
- Kết nối Internet để gọi API
Cách cài đặt các thư viện để chạy được đoạn mã Golang trên:
- Không yêu cầu thêm thư viện ngoài
net/http
vàio/ioutil
, các thư viện này đã được tích hợp sẵn trong Golang.
Lời khuyên:
- Đảm bảo token của bạn là hợp lệ và được cập nhật thường xuyên nếu sử dụng các dịch vụ API bảo mật.
- Sử dụng thư viện
context
để quản lý timeout cho các yêu cầu HTTP nhằm tránh tình trạng yêu cầu bị treo lâu.