0Pricing
Go Academy · Ders

Esnek API Oluşturma

Örüntüyü uygulayın

Esnek API Oluşturma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Kalıbı Uygulama

Şimdi kalıbın tamamını bir araya getirin: gerekli bağımsız değişkenleri ve değişken sayıda seçenek listesini alan bir oluşturucu.

Değişken Sayıda Bağımsız Değişken Alan Oluşturucu

Gerekli parametreler önce gelir; seçenekler ise ...Option olarak bunları izler.

package main

import "fmt"

type Server struct {
	Host string
	Port int
}
type Option func(*Server)

func WithPort(p int) Option { return func(s *Server) { s.Port = p } }

func NewServer(host string, opts ...Option) *Server {
	s := &Server{Host: host}
	for _, opt := range opts {
		opt(s)
	}
	return s
}

func main() {
	s := NewServer("localhost", WithPort(8080))
	fmt.Printf("%+v\n", *s)
}

Seçenek Olmadan Çağırma

Seçenekler değişken sayıda olduğundan, çağıranlar bunları tamamen atlayabilir ve oluşturucunun hazırladığı değerlere güvenebilir.

package main

import "fmt"

type Server struct{ Host string; Port int }
type Option func(*Server)

func NewServer(host string, opts ...Option) *Server {
	s := &Server{Host: host}
	for _, o := range opts { o(s) }
	return s
}

func main() {
	s := NewServer("localhost")
	fmt.Printf("%+v\n", *s)
}

Birden Çok Seçenekle Çağırma

İstediğiniz kadar seçeneği art arda ekleyebilirsiniz; her biri çağrı noktasında açıkça okunur.

package main

import "fmt"

type Server struct {
	Host    string
	Port    int
	Timeout int
	TLS     bool
}
type Option func(*Server)

func WithPort(p int) Option    { return func(s *Server) { s.Port = p } }
func WithTimeout(t int) Option { return func(s *Server) { s.Timeout = t } }
func WithTLS() Option          { return func(s *Server) { s.TLS = true } }

func NewServer(host string, opts ...Option) *Server {
	s := &Server{Host: host}
	for _, o := range opts { o(s) }
	return s
}

func main() {
	s := NewServer("localhost", WithPort(9000), WithTimeout(60), WithTLS())
	fmt.Printf("%+v\n", *s)
}

Kendini Açıklayan Çağrılar

NewServer("localhost", WithPort(9000), WithTLS()) çağrısını konumsal bir çağrıyla karşılaştırın. İmzayı incelemeden amaç açıktır.

Daha Sonra Seçenek Ekleme

Yeni bir ayara mı ihtiyacınız var? Bir WithX işlevi ekleyin. Mevcut tüm çağrı noktaları hiçbir değişiklik yapılmadan derlenmeye devam eder — gerçek geriye dönük uyumluluk.

package main

import "fmt"

type Server struct{ Host string; Retries int }
type Option func(*Server)

func WithRetries(n int) Option { return func(s *Server) { s.Retries = n } }

func NewServer(host string, opts ...Option) *Server {
	s := &Server{Host: host}
	for _, o := range opts { o(s) }
	return s
}

func main() {
	fmt.Printf("%+v\n", *NewServer("h", WithRetries(5)))
}

Seçenekleri Başka Yerlere Geçirme

Seçenekler değer olduğundan, başka bir yerde bir dilim oluşturup bunu oluşturucuya iletebilirsiniz.

package main

import "fmt"

type Server struct{ Host string; Port int }
type Option func(*Server)

func WithPort(p int) Option { return func(s *Server) { s.Port = p } }

func NewServer(host string, opts ...Option) *Server {
	s := &Server{Host: host}
	for _, o := range opts { o(s) }
	return s
}

func main() {
	common := []Option{WithPort(443)}
	s := NewServer("api", common...)
	fmt.Printf("%+v\n", *s)
}

Genel API Olarak Seçenekler

Kütüphane kullanıcılarının iç ayrıntılara dokunmadan türünüzü yapılandırabilmesi için Option türünü ve WithX işlevlerini dışa aktarın.

Alanları Özel Tutma

Yapılandırma alanları dışa aktarılmadan kalabilir; seçenekler bunları ayarlamanın izin verilen tek yoludur ve böylece değişmezleri korur.

Kalıbın Öne Çıktığı Yerler

  • Çok sayıda isteğe bağlı ayara sahip kütüphane oluşturucuları
  • Büyürken kararlı kalması gereken API'ler
  • İstemciler, sunucular, günlükçüler ve oluşturucular

Standart Kütüphanedeki Benzerleri

Bu tarzı Go ekosisteminin tamamında göreceksiniz (gRPC ve birçok sürücüde). Bunu tanımak, bu API'leri tanıdık hissetmenizi sağlar.

Hızlı Denetim

Esnek API bilginizi sınayın.

Özet

İşlevsel seçeneklerle esnek bir API oluşturdunuz.

  • Önce gerekli bağımsız değişkenler, ardından ...Option
  • Her seçeneği uygulayarak seçenekler üzerinde döngü kurun
  • Çağıranlar, açıkça okunacak şekilde sıfır veya birçok seçenek geçirebilir
  • Çağıranları bozmadan daha sonra seçenek ekleyin

Sıkça Sorulan Sorular

“Esnek API Oluşturma” dersi ücretsiz mi?

Evet — “Esnek API Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Esnek API Oluşturma” dersinde ne öğreneceğim?

Örüntüyü uygulayın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Esnek API Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Çok Sayıda Parametrenin Sorunu
  2. Seçenek İşlevleri
  3. Esnek API Oluşturma
  4. Varsayılanlar ve Doğrulama
← Go Academy Sayfasına Dön