كيفية العمل بشكل صحيح مع التهيئة في Go: ENV، JSON، YAML أو الأعلام؟
مرحباً بالجميع! أنا مطور Go مبتدئ، أكتب أول ميكروسيرفيس خاص بي لمعالجة الطلبات. واجهت مشكلة: لا أستطيع فهم كيفية تنظيم تخزين معاملات التهيئة بشكل صحيح (منفذ الخادم، سلسلة اتصال قاعدة البيانات، URL لواجهة API الخارجية، المهلات الزمنية، إلخ).
حالياً، قمت بتضمين كل شيء بشكل ثابت في main.go:
```go
package main
import (
"fmt"
"net/http"
)
func main() {
port := ":8080"
dbConn := "postgres://user:pass@localhost:5432/orders?sslmode=disable"
apiURL := "https://api.example.com"
fmt.Println("Starting server on", port)
http.ListenAndServe(port, nil)
}
```
أدرك أن هذا فظيع: عند تغيير البيئة (dev/staging/prod) يجب إعادة ترجمة الملف الثنائي، وكلمات المرور في الكود هي كارثة أمنية. رأيت أن Go تستخدم طرقاً مختلفة: أعلام سطر الأوامر، متغيرات البيئة، ملفات JSON/YAML/Toml. لكن أي منها يجب اختياره؟ كيف يمكن دمج عدة مصادر؟ كيف نجعل التهيئة آمنة من حيث النوع؟