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
- Çok Sayıda Parametrenin Sorunu
- Seçenek İşlevleri
- Esnek API Oluşturma
- Varsayılanlar ve Doğrulama