Lingara Lingara ឯកសារ មគ្គុទ្ទេសក៍សិក្សា API បណ្ណាល័យ កម្មវិធី បង្កើត កម្មវិធីលើបណ្ដាញ
ភាសា: ខ្មែរ

Go

ទំព័រនេះត្រូវបានបកប្រែពីភាសាអង់គ្លេស។ ប្រសិនបើទាំងពីរខុសគ្នា ទំព័រភាសាអង់គ្លេសគឺត្រឹមត្រូវ។ អានទំព័រភាសាអង់គ្លេស

បណ្ណាល័យ Go គឺជាកញ្ចប់ lingara នៅក្នុងម៉ូឌុល github.com/Spinning-Cat-Studios/lingara_api_clients/go។ វាត្រូវការ Go 1.23 ឬថ្មីជាងនេះ ហើយប្រើតែបណ្ណាល័យស្តង់ដារប៉ុណ្ណោះ។

របៀបប្រើវា

  • ការហៅនីមួយៗទទួល context.Context ជាអាគុយម៉ង់ដំបូង។ បោះបង់ context ដើម្បីបោះបង់ការហៅ កំហុសដែលអ្នកទទួលបានគឺជាកំហុសរបស់ context ផ្ទាល់ ដូច្នេះ errors.Is(err, context.Canceled) ដំណើរការ។
  • ការហៅគឺធ្វើសមកាលកម្ម។ ដំណើរការពួកវាក្នុង goroutine នៅពេលអ្នកចង់បានច្រើនក្នុងពេលតែមួយ ក្លាយអិនតែមួយមានសុវត្ថិភាពក្នុងការប្រើរួមគ្នា។
  • ស្ទ្រីមត្រូវបានអានដោយ for ev, err := range s.Events() ហើយព្រឹត្តិការណ៍នីមួយៗត្រូវបានផ្គូផ្គងដោយ type switch។ បិទវាដោយ defer s.Close()។
  • កំហុសមានបួនប្រភេទដែលប្រើ interface lingara.Error រួមគ្នា។ ប្រើ errors.As ដើម្បីទៅដល់ប្រភេទណាមួយ RetryAfter គឺ nil នៅពេល API មិនបានប្រាប់ពេលរង់ចាំ។
  • ជម្រើសគឺជាប្រភេទមុខងារ៖ បញ្ជូន lingara.WithHTTPClient ដើម្បីប្រើ http.Client ផ្ទាល់ខ្លួនរបស់អ្នក។ បន្ទាប់មក Timeout របស់វាកំណត់ការហៅនីមួយៗ រួមទាំងស្ទ្រីមផង។

គំរូខាងក្រោមដំឡើងម៉ូឌុល បង្កើតក្លាយអិន ស្ទ្រីមបញ្ជីវាក្យសព្ទ និងដោះស្រាយកំហុសមួយ។

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)
}

អ្វីដែលទំព័រនេះរុំ