Sử dụng các API RESTful khi Go

Sử dụng các API RESTful khi Go

RESTful API là kiến ​​trúc phổ biến để truyền dữ liệu trên web. Các API RESTful thường sử dụng HTTP, làm cho chúng phù hợp với các trường hợp mà trạng thái không trạng thái là quan trọng.





Giống như bất kỳ ngôn ngữ phía máy chủ nào, bạn có thể tương tác với giao thức HTTP và thực hiện các yêu cầu HTTP trong Go.





Bắt đầu Sử dụng các API RESTful trong Go

Các http gói cung cấp hầu hết các chức năng bạn cần để tương tác với giao thức HTTP trong Go. Điều này bao gồm việc thực hiện các yêu cầu HTTP và bạn không nhất thiết phải phụ thuộc bên ngoài, như Gin hoặc cơ sở dữ liệu .





LÀM VIDEO TRONG NGÀY

Bạn có thể dùng http gói để sử dụng các API và tìm nạp các trang cho tìm kiếm web trong Go .

Nhập các gói này để bắt đầu thực hiện các yêu cầu HTTP trong Go.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Bạn sẽ sử dụng byte gói để thao tác các lát byte, json gói để định dạng dữ liệu yêu cầu, fmt gói để ghi vào đầu ra tiêu chuẩn, ioutil gói đầu vào và đầu ra, và http gói để gửi yêu cầu.

Yêu cầu NHẬN đơn giản khi di chuyển

Đặc trưng LẤY yêu cầu đọc dữ liệu từ máy chủ và có thể cung cấp các tham số cho dữ liệu tùy thuộc vào bản chất và đặc điểm kỹ thuật của API.





Trong hướng dẫn này, bạn sẽ học cách sử dụng các API RESTful bằng cách sử dụng dịch vụ phản hồi và yêu cầu đơn giản của httpbin.

Dưới đây là một ví dụ về việc thực hiện một yêu cầu HTTP với Go:





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

Các url biến là điểm cuối mà bạn đang gửi yêu cầu. Các Lấy phương thức nhận trong URL, thực thi Lấy yêu cầu và trả về phản hồi, bao gồm cả tiêu đề và nội dung của nó.

Bạn có thể xử lý bất kỳ lỗi nào từ yêu cầu tùy theo yêu cầu của bạn. Nếu không có lỗi, bạn có thể tiến hành trích xuất thông tin bạn cần từ Lấy lời yêu cầu.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

Các câu trả lời Thân hình trường chứa nội dung của phản hồi. Sử dụng Đọc hết phương pháp của ioutil gói, bạn có thể đọc phần nội dung phản hồi và xử lý các lỗi có thể xảy ra.

làm thế nào để viết một tệp dơi
} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

Các khác câu lệnh in nội dung phản hồi vào bảng điều khiển của bạn nếu không có lỗi nào từ thao tác đọc.

Đây là kết quả của LẤY yêu cầu đến điểm cuối của httpbin.

  kết quả từ yêu cầu GET

Yêu cầu ĐĂNG đơn giản khi đang di chuyển

Các yêu cầu POST điển hình cung cấp tải trọng dữ liệu cho máy chủ và máy chủ trả về một phản hồi tùy thuộc vào hoạt động.

Dưới đây là cấu trúc đơn giản để mã hóa tải trọng JSON cho máy chủ như một phần của yêu cầu ĐĂNG.

type JSON struct { 
info string
message string
}

Các JSON struct có thông tin thông điệp trường chuỗi và bạn sẽ khởi tạo một phiên bản cấu trúc cho yêu cầu.

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

Các url biến lưu trữ điểm cuối yêu cầu POST từ trang web httpbin. Các jsonInstance biến là một phiên bản của cấu trúc JSON mà bạn có thể sử dụng để lưu trữ và gửi dữ liệu có cấu trúc.

Bạn có thể dùng Soái ca phương pháp từ json gói để định dạng JSON cho yêu cầu.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

Các Soái ca phương thức cũng trả về một lỗi mà bạn có thể xử lý. Nếu không có lỗi với thao tác sắp xếp JSON, bạn có thể tiếp tục thực hiện yêu cầu ĐĂNG.

Bạn có thể dùng Bưu kiện để thực hiện các yêu cầu POST. Các Bưu kiện phương thức lấy điểm cuối URL, loại nội dung của yêu cầu và vùng đệm của trọng tải. Nó trả về phản hồi và một lỗi.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

Một lần nữa, bạn có thể đọc phần nội dung phản hồi bằng cách sử dụng Đọc hết phương pháp của ioutil bưu kiện:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

Các Println câu lệnh xuất kết quả của yêu cầu HTTP tới bảng điều khiển của bạn.

Như tài liệu httpbin chỉ định, điểm cuối POST này trả về dữ liệu yêu cầu mà bạn gửi nó.

  kết quả từ yêu cầu ĐĂNG

Xây dựng ứng dụng web trong Go thật dễ dàng

Bạn có thể xây dựng các ứng dụng web với nhiều chức năng khác nhau trong Go mà không cần phụ thuộc.

Các http gói có các chức năng bạn sẽ cần cho hầu hết các hoạt động của mình. Bạn có thể sử dụng gói này với những người khác như json gói cho các hoạt động JSON, định nghĩa bài văn gói để báo hiệu và gói khuôn mẫu để tạo khuôn mẫu. Có nhiều gói khác trong thư viện tiêu chuẩn.