Panel.go, external API resource endpoint'leri için otomatik OpenAPI 3.0.3 spesifikasyonu oluşturur ve Swagger UI arayüzü sağlar.
- ✅ Otomatik Spec Oluşturma: Resource'lar ve field'lar otomatik olarak OpenAPI schema'ya çevrilir
- ✅ CRUD Endpoint'leri: List, Get, Create, Update, Delete endpoint'leri otomatik oluşturulur
- ✅ Action Endpoint'leri: Resource action'ları OpenAPI spec'e dahil edilir
- ✅ Filter Parametreleri: Resource filter'ları query parametreleri olarak eklenir
- ✅ Swagger UI: Modern, interaktif API dokümantasyonu
- ✅ Custom Mapping: Field type'ları için özel mapping desteği
Panel.go başlatıldığında aşağıdaki endpoint'ler otomatik olarak oluşturulur:
| Endpoint | Açıklama |
|---|---|
GET /api/docs |
Swagger UI arayüzü |
GET /api/openapi.json |
OpenAPI 3.0.3 spec (JSON) |
Her resource için aşağıdaki endpoint'ler otomatik oluşturulur:
| Endpoint | Method | Açıklama |
|---|---|---|
/api/{slug} |
GET | Resource listesi (paginated) |
/api/{slug} |
POST | Yeni kayıt oluştur |
/api/{slug}/{id} |
GET | Tek kayıt getir |
/api/{slug}/{id} |
PUT | Kayıt güncelle |
/api/{slug}/{id} |
DELETE | Kayıt sil |
/api/{slug}/actions/{action} |
POST | Action çalıştır |
- OpenAPI/Swagger çıktısı yalnızca external API (
/api/:resource) yüzeyini dokümante eder. - Internal panel endpoint'leri (
/api/internal/*) ve internal REST endpoint'leri (/api/internal/rest/*)/api/openapi.jsoniçinde yer almaz. - Swagger operasyon tag'leri resource
Group()değerine göre değil, resource bazlı (title/slug tabanlı) üretilir. /api/docsve/api/openapi.jsonendpoint'leri publictir; session gerektirmez.
Tarayıcınızda aşağıdaki URL'yi açın:
http://localhost:8080/api/docs
Swagger UI, tüm API endpoint'lerini interaktif olarak gösterir. Her endpoint'i test edebilir, request/response örneklerini görebilirsiniz.
OpenAPI spec'i JSON formatında indirmek için:
curl http://localhost:8080/api/openapi.json > openapi.jsonSwagger UI, API'nizi interaktif olarak test etmenizi sağlar:
- Try it out: Endpoint'leri doğrudan tarayıcıdan test edin
- Authentication: API key ile kimlik doğrulama
- Request/Response: Örnek request ve response'ları görün
- Schema: Veri modellerini inceleyin
- Filter: Endpoint'leri arayın ve filtreleyin
- Swagger UI'yı açın:
http://localhost:8080/api/docs - Bir endpoint seçin (örn:
GET /api/users) - "Try it out" butonuna tıklayın
- Parametreleri doldurun
- "Execute" butonuna tıklayın
- Response'u görün
Swagger UI'da authentication kullanmak için:
- Sağ üstteki "Authorize" butonuna tıklayın
- API key ile çalışacaksanız
apiKeyAuthbölümüne key değerini girin - "Authorize" butonuna tıklayın
- Artık endpoint'leri API key ile test edebilirsiniz
OpenAPI spec'i programatik olarak kullanabilirsiniz:
curl http://localhost:8080/api/openapi.json- OpenAPI spec'i indirin
- Postman'i açın
- File > Import
- openapi.json dosyasını seçin
- Tüm endpoint'ler Postman'e import edilir
OpenAPI spec'i kullanarak client kodu oluşturabilirsiniz:
# TypeScript client
npx @openapitools/openapi-generator-cli generate \
-i http://localhost:8080/api/openapi.json \
-g typescript-axios \
-o ./client
# Go client
openapi-generator-cli generate \
-i http://localhost:8080/api/openapi.json \
-g go \
-o ./client
# Python client
openapi-generator-cli generate \
-i http://localhost:8080/api/openapi.json \
-g python \
-o ./clientPanel.go başlatırken OpenAPI config'i özelleştirebilirsiniz:
config := panel.Config{
Name: "My Admin Panel",
// ... diğer config'ler
}
p := panel.New(config)OpenAPI spec'te config.Name değeri title olarak kullanılır.
Field type'larını OpenAPI schema'ya nasıl map edileceğini özelleştirebilirsiniz.
Detaylı bilgi için API-CUSTOM-MAPPING.md dosyasına bakın.
Custom mapping'ler ekledikten sonra spec'i yenilemek için:
panel.RefreshOpenAPISpec()package main
import (
"github.com/ferdiunal/panel.go/pkg/panel"
)
func main() {
config := panel.Config{
Name: "My Admin Panel",
Database: panel.DatabaseConfig{
Instance: db,
},
Server: panel.ServerConfig{
Host: "localhost",
Port: "8080",
},
}
p := panel.New(config)
// OpenAPI endpoint'leri otomatik olarak oluşturulur
// http://localhost:8080/api/docs - Swagger UI
// http://localhost:8080/api/openapi.json - OpenAPI Spec
p.Start()
}package main
import (
"github.com/ferdiunal/panel.go/pkg/panel"
"github.com/ferdiunal/panel.go/pkg/fields"
"github.com/ferdiunal/panel.go/pkg/openapi"
)
func main() {
config := panel.Config{
Name: "My Admin Panel",
// ... config
}
p := panel.New(config)
// Custom field type mapping
p.OpenAPI().MapFieldType(fields.TYPE_RICHTEXT, func(element core.Element) *openapi.Schema {
return &openapi.Schema{
Type: "string",
Format: "html",
Description: "Rich text content (HTML)",
}
})
// Spec'i yenile
p.RefreshOpenAPISpec()
p.Start()
}Swagger UI'da authentication kullanırken:
- API key kullanın
- Key'i güvenli bir şekilde saklayın
- Production'da HTTPS kullanın
API versioning için:
- URL'de version kullanın:
/api/v1/resources/users - OpenAPI spec'te version belirtin
- Field'lara açıklayıcı label'lar ekleyin
- Validation rules ekleyin
- Help text kullanın
- Production'da
/api/docsendpoint'ini kapatmayı düşünün - Veya authentication gerektirin
- Rate limiting uygulayın
Eğer OpenAPI spec oluşturulmuyorsa:
- Resource'ların doğru register edildiğinden emin olun
- Field'ların doğru tanımlandığından emin olun
- Log'ları kontrol edin
Eğer Swagger UI açılmıyorsa:
- URL'nin doğru olduğundan emin olun:
/api/docs - Panel.go'nun başlatıldığından emin olun
- Port'un doğru olduğundan emin olun
Eğer custom mapping çalışmıyorsa:
RefreshOpenAPISpec()metodunu çağırdığınızdan emin olun- Mapping fonksiyonunun doğru olduğundan emin olun
- Field type'ın doğru olduğundan emin olun
OpenAPI spec'e custom extension'lar ekleyebilirsiniz:
// TODO: Extension desteği eklenecekCustom response code'ları ekleyebilirsiniz:
// TODO: Custom response code desteği eklenecekCustom security scheme'leri ekleyebilirsiniz:
// TODO: Custom security scheme desteği eklenecek