İçeriğe geç
Tüm API projeleri

Blog API

Express tabanlı blog backend API endpointleri. Base URL: http://localhost:3000. Korumalı endpoint'lerde Authorization: Bearer <token> başlığı gerekir. Token yoksa 401, token geçersiz/süresi dolmuşsa veya rol yetkisi yoksa 403, kayıt bulunamazsa 404 döner; bazı hatalar JSON yerine Express HTML hata sayfası olarak dönebilir.

Backend deposu

Kimlik Doğrulama (Auth)

POST/api/auth/register

Yeni kullanıcı oluşturur. E-posta zaten kullanımdaysa 409 Conflict döner. Kayıt token'ı `role` claim'i içerir, rol middleware'i ise `roleName` bekler; rol korumalı endpoint'ler için /login yanıtındaki token'ı kullanın.

Örnek request body

{
  "email": "yazar@example.com",
  "password": "GüçlüBirŞifre123!",
  "name": "Yazar",
  "roleId": "<writer rolünün ID'si>"
}
POST/api/auth/login

Kullanıcı girişi yapar ve JWT döndürür.

Örnek request body

{
  "email": "yazar@example.com",
  "password": "GüçlüBirŞifre123!"
}

Kullanıcı Yönetimi (Users)

GET/api/users/writers-all?page=1&limit=10Kimlik doğrulama gerekli

Yazarları sayfalı olarak listeler. `page` varsayılanı 1, `limit` varsayılanı 10, maksimum 100.

GET/api/users/get/:idKimlik doğrulama gerekli

Belirtilen kullanıcıyı getirir. Kullanıcı bulunamazsa 404 Not Found döner.

PATCH/api/users/change-passwordKimlik doğrulama gerekli

Oturum açmış kullanıcının şifresini günceller.

Örnek request body

{
  "oldPassword": "EskiŞifre123!",
  "newPassword": "YeniŞifre456!"
}
DELETE/api/users/delete/:idKimlik doğrulama gerekli

Token sahibi kullanıcıyı siler. Bilinen sorun: testte 500 döndü; UserService oluşturulurken gereken blog repository bağımlılığı verilmemiş.

Blog Yönetimi (Blogs)

GET/api/blogs/all?page=1&limit=10

Blogları sayfalı olarak listeler. `page` varsayılanı 1, `limit` varsayılanı 10, maksimum 100.

GET/api/blogs/get/:id

Belirtilen blogu getirir. Kayıt bulunamazsa mevcut kod 200 OK ile null döndürebilir.

GET/api/blogs/detail/:id

Blog detayını ve ilişkili blog nesnesini getirir. Bilinen sorun: testte 500 döndü; sorgu BlogDetail modelinde bulunmayan `isActive` alanını kullanıyor.

POST/api/blogs/createKimlik doğrulama gerekli

Yeni blog oluşturur. `writer` veya `admin` rolü gerekir. `summary` isteğe bağlıdır; `authorId` token'dan alınır. Blog.content benzersiz indeksli olduğundan her blog için farklı bir `content` kullanılmalıdır.

Örnek request body

{
  "title": "Örnek başlık",
  "content": "Benzersiz blog içeriği",
  "summary": "Kısa özet"
}
PUT/api/blogs/update/:idKimlik doğrulama gerekli

Blogu günceller. `writer` veya `admin` rolü gerekir. Bilinen sorun: testte 500 döndü; controller, güncelleme alanlarını servis metoduna beklenen nesne biçiminde iletmiyor.

Örnek request body

{
  "title": "Güncel başlık",
  "content": "Yeni ve benzersiz içerik",
  "summary": "Güncel özet"
}
DELETE/api/blogs/delete/:idKimlik doğrulama gerekli

Blogu siler/pasifleştirir. `writer` veya `admin` rolü gerekir. Silinmiş/pasifleştirilmiş blog nesnesini döndürür.

Yönetici (Admin)

GET/api/admin/all-users?page=1&limit=10Kimlik doğrulama gerekli

Sayfalı kullanıcı listesi döndürür; kullanıcı alanlarına `isActive` ve rol bilgisi dahildir. Admin rolü gerekir.

DELETE/api/admin/delete-user/:idKimlik doğrulama gerekli

Belirtilen kullanıcıyı siler. Admin rolü gerekir. Bilinen sorun: ilişkili blog detaylarını silerken kod, BlogDetail modelinde olmayan `isActive` alanını güncellemeye çalışıyor ve 500 verebiliyor.

DELETE/api/admin/delete-blog/:idKimlik doğrulama gerekli

Belirtilen blogu siler. Admin rolü gerekir.