Lingara Lingara Tài liệu Cẩm nang API Thư viện Ứng dụng Tạo Ứng dụng web
Ngôn ngữ: Tiếng Việt

Go

Trang này được dịch từ tiếng Anh. Nếu hai bản khác nhau, trang tiếng Anh là bản đúng. Đọc trang tiếng Anh

Thư viện Go là gói lingara trong mô-đun github.com/Spinning-Cat-Studios/lingara_api_clients/go. Thư viện cần Go 1.23 trở lên và chỉ dùng thư viện chuẩn.

Cách sử dụng

  • Mọi lệnh gọi đều nhận một context.Context làm tham số đầu tiên. Hủy context để hủy lệnh gọi; lỗi bạn nhận lại là lỗi của chính context, nên errors.Is(err, context.Canceled) vẫn hoạt động.
  • Các lệnh gọi là đồng bộ. Hãy chạy chúng trong goroutine khi bạn muốn chạy nhiều lệnh gọi cùng lúc; một máy khách có thể được dùng chung an toàn.
  • Luồng được đọc bằng for ev, err := range s.Events(), và mỗi sự kiện được so khớp bằng một type switch. Đóng luồng bằng defer s.Close().
  • Lỗi gồm bốn kiểu có chung giao diện lingara.Error. Dùng errors.As để lấy ra một kiểu; RetryAfter là nil khi API không nêu thời gian chờ.
  • Các tùy chọn ở dạng hàm: truyền lingara.WithHTTPClient để dùng http.Client của riêng bạn. Khi đó Timeout của nó giới hạn mọi lệnh gọi, kể cả luồng.

Các mẫu dưới đây cài đặt mô-đun, tạo máy khách, phát trực tuyến một danh sách từ vựng và xử lý lỗi.

Go

go get github.com/Spinning-Cat-Studios/lingara_api_clients/go@v0.1.0-alpha.6

Go

import (
	"os"

	lingara "github.com/Spinning-Cat-Studios/lingara_api_clients/go"
)

client, err := lingara.New(
	lingara.WithClientCredentials(os.Getenv("LINGARA_CLIENT_ID"), os.Getenv("LINGARA_CLIENT_SECRET")),
)
if err != nil {
	return nil, err
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Go

_, err := client.GetUsage(ctx)
var apiErr *lingara.APIError
var oauthErr *lingara.OAuthError
var maintenance *lingara.MaintenanceError
var transport *lingara.TransportError
switch {
case err == nil:
case errors.As(err, &apiErr):
	// A refusal from the API: Status, Code (stable) and Message (localised).
	fmt.Println(apiErr.Status, apiErr.Code, apiErr.Message)
	if apiErr.RetryAfter != nil {
		fmt.Println("retry after", *apiErr.RetryAfter)
	}
case errors.As(err, &oauthErr):
	// The token endpoint refused the credentials or the scopes.
	fmt.Println(oauthErr.Status, oauthErr.ErrorCode, oauthErr.Description)
case errors.As(err, &maintenance):
	fmt.Println("under maintenance")
	if maintenance.RetryAfter != nil {
		fmt.Println("retry after", *maintenance.RetryAfter)
	}
case errors.As(err, &transport):
	// No usable answer: connect, tls, reset, timeout, and so on.
	fmt.Println("transport:", transport.Kind)
default:
	// ctx was cancelled or timed out: errors.Is(err, context.Canceled).
	fmt.Println(err)
}

Những gì trang này bao bọc