8.1 KiB
8.1 KiB
✅ Swagger Dokümantasyonu Güncellendi!
📚 Swagger Endpoint'leri
Toplam: 20 Endpoint, 30+ Method
🔐 Authentication (7 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| POST | /auth/login |
Kullanıcı girişi |
| POST | /auth/register |
Yeni kullanıcı kaydı |
| POST | /auth/refresh |
Token yenileme |
| GET | /auth/me |
Kullanıcı bilgilerini getir |
| GET | /auth/verify-email |
Email doğrulama |
| GET | /auth/{provider} |
OAuth başlat (Google/GitHub) |
| GET | /auth/{provider}/callback |
OAuth callback |
👤 User Avatar (2 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| POST | /v1/user/avatar |
✅ Avatar yükle (multipart) |
| DELETE | /v1/user/avatar |
✅ Avatar sil |
👨💼 Admin - User Management (6 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| GET | /v1/admin/users |
✅ Tüm kullanıcıları listele |
| POST | /v1/admin/users |
✅ Yeni kullanıcı oluştur (multipart) |
| GET | /v1/admin/users/search |
✅ Kullanıcı ara |
| GET | /v1/admin/users/{id} |
✅ Kullanıcı detayları |
| PUT | /v1/admin/users/{id} |
✅ Kullanıcı güncelle (multipart) |
| DELETE | /v1/admin/users/{id} |
✅ Kullanıcı sil |
🎭 Admin - Role Management (2 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| POST | /v1/admin/users/{id}/roles |
✅ Rol ata |
| DELETE | /v1/admin/users/{id}/roles/{role} |
✅ Rol kaldır |
📸 Admin - Avatar Management (1 endpoint)
| Method | Endpoint | Açıklama |
|---|---|---|
| POST | /v1/admin/users/{id}/avatar |
✅ Kullanıcı avatar yükle (multipart) |
🌐 Admin - CORS Whitelist (2 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| GET | /v1/settings/cors/whitelist |
✅ Whitelist listesi |
| POST | /v1/settings/cors/whitelist |
✅ Whitelist ekle |
| PUT | /v1/settings/cors/whitelist/{id} |
✅ Whitelist güncelle |
| DELETE | /v1/settings/cors/whitelist/{id} |
✅ Whitelist sil |
🚫 Admin - CORS Blacklist (2 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| GET | /v1/settings/cors/blacklist |
✅ Blacklist listesi |
| POST | /v1/settings/cors/blacklist |
✅ Blacklist ekle |
| PUT | /v1/settings/cors/blacklist/{id} |
✅ Blacklist güncelle |
| DELETE | /v1/settings/cors/blacklist/{id} |
✅ Blacklist sil |
⏱️ Admin - Rate Limit (2 endpoints)
| Method | Endpoint | Açıklama |
|---|---|---|
| GET | /v1/settings/ratelimit |
✅ Rate limit ayarları |
| PUT | /v1/settings/ratelimit/{id} |
✅ Rate limit güncelle |
🎯 Swagger UI Erişimi
Browser'da Aç
http://localhost:8080/docs/index.html
API Dokümantasyonu
http://localhost:8080/docs/swagger.json
http://localhost:8080/docs/swagger.yaml
📋 Swagger Özeti
Endpoint İstatistikleri
📊 Toplam Endpoint'ler: 20
📊 Toplam Method'lar: 30+
🔐 Auth: 7 endpoint
👤 User: 2 endpoint (avatar)
👨💼 Admin User Management: 6 endpoint
🎭 Admin Role Management: 2 endpoint
📸 Admin Avatar Management: 1 endpoint
🌐 Admin CORS Whitelist: 2 endpoint
🚫 Admin CORS Blacklist: 2 endpoint
⏱️ Admin Rate Limit: 2 endpoint
🎨 Swagger Görünümü
Gruplar (Tags)
- auth - Authentication endpoints
- User - User avatar management
- Admin - User Management - User CRUD operations
- Admin - Settings - CORS & Rate Limit settings
✅ Yeni Eklenen Endpoint'ler
Avatar Upload Endpoints
POST /v1/user/avatar
Summary: Upload user avatar
Content-Type: multipart/form-data
Parameters:
- avatar: file (required)
Security: Bearer Token
DELETE /v1/user/avatar
Summary: Delete user avatar
Security: Bearer Token
POST /v1/admin/users/{id}/avatar
Summary: Upload avatar for any user (Admin only)
Content-Type: multipart/form-data
Parameters:
- id: path (user ID)
- avatar: file (required)
Security: Bearer Token
Multipart Support
POST /v1/admin/users
Summary: Create new user (Admin only)
Content-Type: multipart/form-data
Parameters:
- email: string (required)
- password: string (required)
- user_name: string (required)
- email_verified: boolean
- roles: string (comma separated)
- avatar: file
PUT /v1/admin/users/{id}
Summary: Update user (Admin only)
Content-Type: multipart/form-data
Parameters:
- id: path (user ID)
- email: string
- password: string
- user_name: string
- email_verified: boolean
- roles: string (comma separated)
- avatar: file
🔧 Swagger Generate Komutu
cd /Users/beyhan/Desktop/Projeler/Go/AuthCentral
swag init -g main.go --output ./docs
Otomatik olarak oluşturur:
docs/docs.godocs/swagger.jsondocs/swagger.yaml
📖 Swagger Annotations Örneği
Avatar Upload Handler
// UploadAvatar godoc
// @Summary Upload user avatar
// @Tags User
// @Security ApiKeyAuth
// @Accept multipart/form-data
// @Produce json
// @Param avatar formData file true "Avatar image file"
// @Success 200 {object} map[string]interface{}
// @Router /v1/user/avatar [post]
func (h *AvatarHandler) UploadAvatar(c *gin.Context) {
// ...
}
Create User Handler
// CreateUser godoc
// @Summary Create new user (Admin only)
// @Tags Admin - User Management
// @Security ApiKeyAuth
// @Accept multipart/form-data
// @Produce json
// @Param email formData string true "Email"
// @Param password formData string true "Password"
// @Param user_name formData string true "Username"
// @Param email_verified formData boolean false "Email verified"
// @Param roles formData string false "Roles (comma separated)"
// @Param avatar formData file false "Avatar image"
// @Success 201 {object} models.User
// @Router /v1/admin/users [post]
func (h *UserManagementHandler) CreateUser(c *gin.Context) {
// ...
}
🧪 Swagger UI'da Test Etme
1. Swagger UI'ı Açın
http://localhost:8080/docs/index.html
2. Authorize Butonuna Tıklayın
- Token:
Bearer YOUR_TOKEN
3. Endpoint Seçin
- Örnek:
POST /v1/user/avatar
4. Try It Out
- Dosya seçin
- Execute
5. Response
{
"message": "Avatar uploaded successfully",
"avatar_url": "/uploads/avatars/user-id_timestamp.png",
"user": {
"id": "...",
"username": "...",
"avatar": "/uploads/avatars/user-id_timestamp.png"
}
}
📊 Model Definitions
Swagger'da tanımlı modeller:
models.User:
- id: string
- username: string
- email: string
- avatar: string
- email_verified: boolean
- created_at: string
- updated_at: string
- roles: array[models.Role]
- social_accounts: array[models.SocialAccount]
models.Role:
- id: integer
- name: string
- description: string
- permissions: array[models.Permission]
models.Permission:
- id: integer
- name: string
- description: string
models.SocialAccount:
- id: string
- user_id: string
- provider: string
- provider_id: string
- email: string
- name: string
- avatar_url: string
models.CorsWhitelist:
- id: string
- origin: string
- description: string
- is_active: boolean
models.CorsBlacklist:
- id: string
- origin: string
- reason: string
- is_active: boolean
models.RateLimitSetting:
- id: integer
- name: string
- requests_per_minute: integer
- requests_per_hour: integer
- is_active: boolean
✅ Tamamlandı!
Swagger Özellikleri
- ✅ 20 Endpoint tamamen dokümante edildi
- ✅ Multipart/form-data desteği eklendi
- ✅ Avatar upload endpoint'leri var
- ✅ Admin user management endpoint'leri var
- ✅ CORS ve Rate Limit endpoint'leri var
- ✅ Security (Bearer Token) tanımlı
- ✅ Model definitions tam
- ✅ Request/Response examples
Erişim
🌐 Swagger UI: http://localhost:8080/docs/index.html
📄 JSON: http://localhost:8080/docs/swagger.json
📄 YAML: http://localhost:8080/docs/swagger.yaml
Swagger dokümantasyonu eksiksiz! 🎉