Projenin temel amacı, çeşitli gezegenler ve gezegenlerin uydularının sıcaklık bilgilerini sağlayan bir API geliştirmektir. Bu projenin hedefi ise programlamada C# dilini ve .NET dünyasını öğrenmek ve bu alanda ilerlemek için tecrübe kazanmaktır. Projeyi geliştirirken SOLID yazılım tekniklerini de kullanarak bu teknikleri uygulamalı olarak öğrenme fırsatı buldum. Bu proje, yazılım geliştirici olma yolundaki gelişimime katkı sağlayarak temelimi sağlam atmama yardımcı oldu.
- Core: Toolların diğer projelerde kullanılmasını sağlayan genel bir katmandır.
- Entities: Veritabanındaki tabloları nesneye dönüştürdüğümüz katman.
- DataAccess: Veritabanı işlemlerini yaptığımız katman.
- Business: İş kurallarımızı geliştirdiğimiz katman.
- WebAPI: Restful (Representational State Transfer) HTTP protokolü ile sunucu-istemci iletişimi sağladığımız katman.
- Kullanıcı kayıt olma
- Kullanıcı giriş yapma
- Kullanıcı ekleme
- Kullanıcı silme
- Kullanıcı güncelleme
- Kullanıcı listeleme
- Profil düzenleme
- Gezegen ekleme
- Gezegen silme
- Gezegen güncelleme
- Gezegen listeleme
- Uydu ekleme
- Uydu silme
- Uydu güncelleme
- Uydu listeleme
AuthController, kimlik doğrulama ve kullanıcı işlemleri için kullanılan API kontrollerini içerir.
Kullanıcının giriş yapmasını sağlayan bir POST isteği yapar.
POST /api/v1/auth/login
Parametre | Tip | Açıklama |
---|---|---|
userForLoginDto | UserForLoginDto | Giriş yapmak için kullanıcının bilgilerini içerir. |
{
"email": "example@example.com",
"password": "password123"
}
- 200 OK: Giriş başarılıysa ve erişim anahtarı oluşturulduysa dönüş yapılır.
- 400 Bad Request: Giriş başarısız veya hatalı istek yapıldığında dönüş yapılır.
Yeni bir kullanıcının kaydolmasını sağlayan bir POST isteği yapar.
POST /api/v1/auth/register
Parametre | Tip | Açıklama |
---|---|---|
userForRegisterDto | UserForRegisterDto | Yeni kullanıcının kaydolması için gerekli bilgileri içerir. |
{
"email": "string",
"password": "string",
"firstName": "string",
"lastName": "string"
}
- 200 OK: Kayıt başarılıysa ve erişim anahtarı oluşturulduysa dönüş yapılır.
- 400 Bad Request: Kayıt başarısız veya hatalı istek yapıldığında dönüş yapılır.
Bu API dokümantasyonu AuthController'daki endpointlerin kullanımını ve parametrelerini açıklar.
UserControllers, kullanıcı işlemleri için API denetleyicilerini içerir.
Yeni bir kullanıcı eklemek için POST isteği yapar.
POST /api/v1/users
Parametre | Tip | Açıklama |
---|---|---|
user | User | Eklenmek istenen kullanıcının bilgilerini içerir |
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"firstName": "string",
"lastName": "string",
"email": "string",
"passwordSalt": "string",
"passwordHash": "string",
"status": true
}
- 200 OK: Kullanıcı başarıyla eklenirse sonucu döndürür
- 400 Bad Request: Kullanıcı eklenemezse hata döndürür
Bir kullanıcıyı silmek için DELETE isteği yapar.
DELETE /api/v1/users
Parametre | Tip | Açıklama |
---|---|---|
user | User | Silinmek istenen kullanıcının bilgilerini içerir |
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"firstName": "string",
"lastName": "string",
"email": "string",
"passwordSalt": "string",
"passwordHash": "string",
"status": true
}
- 200 OK: Kullanıcı başarıyla silinirse sonucu döndürür
- 401 Unauthorized: İstek yetkilendirilmediyse hata döndürür
- 400 Bad Request: Kullanıcı silinemezse hata döndürür
Bir kullanıcıyı güncellemek için PUT isteği yapar.
PUT /api/v1/users
Parametre | Tip | Açıklama |
---|---|---|
user | User | Güncellenmek istenen kullanıcının bilgilerini içerir |
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"firstName": "string",
"lastName": "string",
"email": "string",
"passwordSalt": "string",
"passwordHash": "string",
"status": true
}
- 200 OK: Kullanıcı başarıyla güncellenirse sonucu döndürür
- 400 Bad Request: Kullanıcı güncellenemezse hata döndürür
Bir kullanıcının profilini kısmen güncellemek için PATCH isteği yapar.
PATCH /api/v1/users/editprofile/{id}
Parametre | Tip | Açıklama |
---|---|---|
id | Guid | Güncellenmek istenen kullanıcının kimliği |
patchDocument | JsonPatchDocument | Güncellenecek alanları içeren belge |
[
{
"operationType": 0,
"path": "string",
"op": "string",
"from": "string",
"value": "string"
}
]
- 200 OK: Kullanıcının profili başarıyla güncellenirse sonucu döndürür
- 400 Bad Request: Kullanıcının profili güncellenemezse hata döndürür
Tüm kullanıcıları almak için GET isteği yapar.
GET /api/v1/users?status=true&sortOrder=asc&page=1&size=10
Parametre | Tip | Açıklama |
---|---|---|
status | bool | Kullanıcıların durumunu belirtir |
sortOrder | string | Sıralama düzenini belirtir |
page | int | Sayfa numarasını belirtir |
size | int | Sayfa boyutunu belirtir |
- 200 OK: Kullanıcılar başarıyla alınırsa sonucu döndürür
- 400 Bad Request: Kullanıcılar alınamazsa hata döndürür
Bir kullanıcıyı kimliğine göre almak için GET isteği yapar.
GET /api/v1/users/getbyid/{id}
Parametre | Tip | Açıklama |
---|---|---|
id | Guid | Kullanıcının kimliği |
- 200 OK: Kullanıcı başarıyla alınırsa sonucu döndürür
- 400 Bad Request: Kullanıcı alınamazsa hata döndürür
Bir kullanıcıyı e-posta adresine göre almak için GET isteği yapar.
GET /api/v1/users/getbymail?email={email}
Parametre | Tip | Açıklama |
---|---|---|
string | Kullanıcının e-posta adresi |
- 200 OK: Kullanıcı başarıyla alınırsa sonucu döndürür
- 400 BadRequest: Kullanıcı alınamazsa hata döndürür
PlanetsController, gezegen işlemleri için API endpoint'leri içerir.
Yeni bir gezegen eklemek için bir POST isteği yapar.
POST /api/v1/planets
Parametre | Tür | Açıklama |
---|---|---|
planet | PlanetAddDto | Eklenmek istenen gezegenin bilgilerini içerir |
{
"id": 0,
"satelliteId": 0,
"name": "string",
"weather": 0
}
- 201 Created: Gezegen başarıyla eklendiyse sonucu döndürür.
- 400 Bad Request: Gezegen eklenemediyse bir hata döndürür.
Bir gezegeni silmek için bir DELETE isteği yapar.
DELETE /api/v1/planets
Parametre | Tür | Açıklama |
---|---|---|
planet | PlanetDeleteDto | Silinmek istenen gezegenin bilgilerini içerir |
{
"id": 0,
"name": "string"
}
- 204 No Content: Gezegen başarıyla silindiğinde sonucu döndürür.
- 400 Bad Request: Gezegen silinemediyse bir hata döndürür.
Bir gezegeni güncellemek için bir PUT isteği yapar.
PUT /api/v1/planets
Parametre | Tür | Açıklama |
---|---|---|
planet | Planet | Güncellenmek istenen gezegenin bilgilerini içerir |
{
"id": 0,
"satelliteId": 0,
"name": "string",
"weather": 0
}
- 200 OK: Gezegen başarıyla güncellendiğinde sonucu döndürür.
- 400 Bad Request: Gezegen güncellenemediyse bir hata döndürür.
Bir gezegenin ayrıntılarını kısmi olarak güncellemek için bir PATCH isteği yapar.
PATCH /api/v1/planets/editplanet/{id}
Parametre | Tür | Açıklama |
---|---|---|
id | int | Güncellenmek istenen gezegenin kimliği |
patchDocument | JsonPatchDocument | Gezegen ayrıntılarının güncelleme dokümanı |
[
{
"operationType": 0,
"path": "string",
"op": "string",
"from": "string",
"value": "string"
}
]
- 200 OK: Gezegen ayrıntıları başarıyla güncellendiğinde sonucu döndürür.
- 400 Bad Request: Gezegen ayrıntıları güncellenemediyse bir hata döndürür.
Tüm gezegenlerin listesini almak için bir GET isteği yapar.
GET /api/v1/planets?sortBy=planetName&sortOrder=asc&page=1&size=10
Parametre | Tür | Açıklama |
---|---|---|
sortBy | string | Sıralama için kullanılacak özellik adı |
sortOrder | string | Sıralama düzeni (asc veya desc) |
----------- | ------- | ------------------------------------------ |
page | int | Sayfa numarası |
size | int | Sayfa başına döndürülecek öğe sayısı |
- 200 OK: Tüm gezegenlerin listesi başarıyla döndürüldüğünde sonucu döndürür.
- 400 Bad Request: Gezegenlerin listesi alınamadıysa bir hata döndürür.
- 404 Not Found: Eşleşen içerik bulunmazsa bir hata döndürür.
Bir gezegenin ayrıntılarını kimliğiyle birlikte almak için bir GET isteği yapar.
GET /api/v1/planets/{id}
Parametre | Tür | Açıklama |
---|---|---|
id | int | Gezegenin kimliği |
- 200 OK: Gezegen ayrıntıları başarıyla döndürüldüğünde sonucu döndürür.
- 400 Bad Request: Gezegen ayrıntıları alınamadıysa bir hata döndürür.
Bir gezegenin ayrıntılarını kimliğiyle birlikte almak için bir GET isteği yapar.
GET /api/v1/planets/getplanetdetailbyid/{id}
Parametre | Tür | Açıklama |
---|---|---|
id | int | Gezegenin kimliği |
- 200 OK: Gezegen ayrıntıları başarıyla döndürüldüğünde sonucu döndürür.
- 400 Bad Request: Gezegen ayrıntıları alınamadıysa bir hata döndürür.
Tüm gezegenlerin ayrıntılarını almak için bir GET isteği yapar.
GET /api/v1/planets/getplanetdetails
- 200 OK: Tüm gezegen ayrıntıları başarıyla döndürüldüğünde sonucu döndürür.
- 400 Bad Request: Gezegen ayrıntıları alınamadıysa bir hata döndürür.
SatellitesController, uydu işlemleri için API endpoint'leri içerir.
Yeni bir uydu eklemek için bir POST isteği yapar.
POST /api/v1/satellites
Parametre | Tür | Açıklama |
---|---|---|
satellite | SatelliteAddDto | Eklenmek istenen uydunun bilgilerini içerir |
{
"name": "string",
"weather": 0
}
- 201 Created: Uydu başarıyla eklendiyse sonucu döndürür.
- 400 Bad Request: Uydu eklenemediyse bir hata döndürür.
Bir uyduyu güncellemek için bir PUT isteği yapar.
PUT /api/v1/satellites
Parametre | Tür | Açıklama |
---|---|---|
satellite | Satellite | Güncellenmek istenen uydunun bilgilerini içerir |
{
"id": 0,
"name": "string",
"weather": 0
}
- 200 OK: Uydu başarıyla güncellendiğinde sonucu döndürür.
- 400 Bad Request: Uydu güncellenemediyse bir hata döndürür.
Bir uyduyu silmek için bir DELETE isteği yapar.
DELETE /api/v1/satellites
Parametre | Tür | Açıklama |
---|---|---|
satellite | SatelliteDeleteDto | Silinmek istenen uydunun bilgilerini içerir |
{
"id": 0,
"name": "string"
}
- 204 No Content: Uydu başarıyla silindiğinde sonucu döndürür.
- 400 Bad Request: Uydu silinemediyse bir hata döndürür.
Bir uyduyun ayrıntılarını kısmi olarak güncellemek için bir PATCH isteği yapar.
PATCH /api/v1/satellites/editsatellite/{id}
Parametre | Tür | Açıklama |
---|---|---|
id | int | Güncellenmek istenen uydunun kimliği |
patchDocument | JsonPatchDocument | Uydu ayrıntılarının güncelleme dokümanı |
[
{
"operationType": 0,
"path": "string",
"op": "string",
"from": "string",
"value": "string"
}
]
- 200 OK: Uydu ayrıntıları başarıyla güncellendiğinde sonucu döndürür.
- 400 Bad Request: Uydu ayrıntıları güncellenemediyse bir hata döndürür.
Tüm uyduların listesini almak için bir GET isteği yapar.
GET /api/v1/satellites?sortBy=satelliteName&sortOrder=asc&page=1&size=10
Parametre | Tür | Açıklama |
---|---|---|
sortBy | Parametre | Tür |
----------- | ------- | ------------------------------------------ |
sortBy | string | Sıralama için kullanılacak özellik |
sortOrder | string | Sıralama düzeni (asc veya desc) |
page | int | Sayfalama için sayfa numarası |
size | int | Sayfalama için sayfa başına öğe sayısı |
- 200 OK: Uydu listesi başarıyla alındığında sonucu döndürür.
- 400 Bad Request: Uydu listesi alınamadıysa bir hata döndürür.
Bir uyduyu kimliğiyle birlikte almak için bir GET isteği yapar.
GET /api/v1/satellites/getbyid?id=1
Parametre | Tür | Açıklama |
---|---|---|
id | int | Alınmak istenen uyduyun kimliği |
- 200 OK: Uydu başarıyla alındığında sonucu döndürür.
- 400 Bad Request: Uydu alınamadıysa bir hata döndürür.
- Tüm istekler JSON formatında gövde verisi bekler.
- Yanıtlar da JSON formatında döndürülür.