Belgelere geç
Go

Yapılandırma

İstemcinin her seçeneği, ortamdan okudukları ve reddettikleri.

Seçenekler

client.go
client := openemail.New(	openemail.WithAPIKey(os.Getenv("OPENEMAIL_API_KEY")),	openemail.WithBaseURL("https://api.openemail.uk"),	openemail.WithTimeout(30*time.Second),	openemail.WithMaxRetries(2),	openemail.WithHeader("X-Team", "billing"),) if err := client.Err(); err != nil {	return err} fmt.Println(client.Mode(), client.BaseURL())
SeçenekNe yapar
WithAPIKeyoe_live_ ya da oe_test_ ile başlayan çalışma alanı API anahtarı. Bir çağrıda verildiğinde, yalnızca o çağrı için başka bir anahtarla işlem yapar.
WithAccessTokenBir kişinin bağladığı uygulama için OAuth erişim belirteci. Bir anahtar ya da bir belirteç geçirin, ikisini birden değil.
WithAccessTokenFuncErişim belirtecini döndüren bir işlev. Her istekten önce çalışır, bu yüzden belirteci yenilemenin yeri burasıdır.
WithBaseURLAPI'nin kaynağı. localhost:2222 gibi yalın bir ana makineye şeması eklenir.
WithHTTPClientBir *http.Client ya da aynı Do yöntemine sahip herhangi bir şey. Bir test buraya sahte bir istemci geçirir.
WithTimeoutTek bir denemenin ne kadar sürebileceği. Varsayılan 30 saniyedir, sıfır bunu kapatır ve yüklemeler en az on dakika bekler.
WithMaxRetriesBaşarısız bir isteğin kaç kez yeniden deneneceği. Varsayılan 2'dir, 0 ise bir kez gönderir.
WithUserAgentopenemail-go/ ve sürümden oluşan User-Agent üstbilgisinin yerine geçer.
WithHeaderHer isteğe bir üstbilgi ekler.

Belirtmediğiniz her şey ortamdan okunur: OPENEMAIL_API_KEY, ardından OPENEMAIL_ACCESS_TOKEN ve OPENEMAIL_BASE_URL. client.Mode() anahtarın live mi yoksa test anahtarı mı olduğunu söyler.

Bağlam ve zaman aşımları

Her yöntem önce bir context.Context alır. Onu iptal etmek çağrıyı hemen durdurur, son tarihi yeniden denemeler dahil tüm çağrıyı sınırlar, WithTimeout ise her denemeyi sınırlar. WithTimeout tek bir çağrıda da çalışır.

deadline.go
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)defer cancel() thread, err := client.Threads.Get(ctx, "CAHk7pQ2x9LmZ4-mail.example.com", openemail.WithTimeout(5*time.Second))if err != nil {	return err} fmt.Println(thread.Int("messageCount"))

Bir çağrıdaki seçenekler

Sorgu parametreleri ve çağrı ayarları, bağımsız değişkenlerden sonra geçirilen işlevlerdir; örneğin openemail.WithLimit, openemail.WithCursor ve openemail.WithIdempotencyKey. Her yöntem, başvuru girdisinde listelenen seçenekleri kabul eder ve uymayan bir seçenek hiçbir şey gönderilmeden reddedilir.

another_workspace.go
page, err := client.Emails.List(ctx,	openemail.WithStatus("failed", "bounced"),	openemail.WithLimit(50),	openemail.WithAPIKey(os.Getenv("OTHER_WORKSPACE_KEY")),)if err != nil {	return err} fmt.Println(len(page.Items), page.HasMore)

İstemcinin reddettikleri

  • oe_live_ ya da oe_test_ ile başlamayan bir anahtar ve bir erişim belirteciyle birlikte verilen bir anahtar.
  • Sunucu bu makinede localhost, bir 127.x.x.x adresi ya da ::1 üzerinde değilse, bir kimlik bilgisini düz http: üzerinden göndermek.
  • Bir sunucunun dinlediği adres olan 0.0.0.0 üzerindeki bir temel URL. Aynı bağlantı noktasıyla 127.0.0.1 kullanın.
  • Boş bir kimlik ya da yalnızca noktalardan oluşan ve bir URL ayrıştırıcısının kaldıracağı bir kimlik.
  • Bir yönlendirmeyi izlemek. Varsayılan HTTP istemcisi onu hata olarak döndürür, böylece bir kimlik bilgisi asla başka bir ana makineye gitmez.

Bir istemciyi, bir seçeneği ya da bir hatayı yazdırmak hiçbir zaman kimlik bilgisi göstermez. Anahtar, belirteç ve özel üstbilgilerin değerleri fmt, log/slog ve encoding/json çıktısının dışında tutulur.

Yöntemi olmayan bir uç nokta

client.Request, istemcinin kimlik bilgisi, temel URL'si, zaman aşımı ve yeniden deneme kurallarıyla herhangi bir yolu çağırır. Yol tek bir / ile başlamalıdır ve temel URL'nin kaynağının dışına çıkan bir yol reddedilir.

request.go
label, err := client.Request(ctx, http.MethodPost, "/labels", openemail.Body{"name": "Invoices"})if err != nil {	return err} fmt.Println(label)