Bu projede, İlişkisel Veritabanında depolanan CARS yönetmek için kullanılabilecek bir API yazacaksınız.
Projeyi forlayın, clonelayın ve yazdığınız kodları pushlamayı unutmayın.
Bir "cars" kaynağı için bir RESTful API oluşturun. Bu API'nin kullanıcısı bir araba satıcısıdır.
Her araba için kritik bilgiler, şasi numarası(vin), marka(make), model ve kilometredir(mileage). Ayrıca aracın vites türünü(transmission) (manuel, otomatik...) ve durum başlığını(title) (temiz, hurda...) da takip ederiz, ancak bu bilgi her zaman ilk başta bilinmez.
Aşağıdaki şemayı karşılamak için data/migrations/01-make_cars_table.js
migration dosyasının içine "up" ve "down" fonksiyonlarını yazın:
bölüm | veri tipi | metadata |
---|---|---|
id | unsigned integer | primary key, auto-increments, generated by database |
vin | string | required, unique |
make | string | required |
model | string | required |
mileage | numeric | required |
title | string | optional |
transmission | string | optional |
-
Aşağıdaki db erişim fonksiyonlarını Knex kullanarak
api/cars/cars-model.js
içine yazın:getAll
bir dizi araba kaydına (veya boş bir diziye) çözümlenirgetById
verilen kimliğe göre bir araba kaydına çözümlenircreate
yeni oluşturulan araba kaydına çözümlenir
-
"api/cars/cars-middleware.js" içine aşağıdaki ara yazılımları yazın:
-
checkCarId
,req.params
içindeki kimlik veritabanında yoksa,{ mesaj: "<car id> kimliğine sahip araba bulunamadı" }
ile bir durum 404 döndürür. -
checkCarPayload
, herhangi bir gerekli alan eksikse,{ mesaj: "<alan adı> eksik" }
içeren bir durum 400 döndürür. -
checkVinNumberValid
, vin numarası geçersiz ise,{ mesaj: "vin <vin numarası> geçersizdir" }
ile bir durum 400 döndürür. -
checkVinNumberUnique
, vin(şasi) numarası veritabanında zaten mevcutsa, `{ mesaj: "vin <vin numarası> zaten var" }' ile bir durum 400 döndürür.
-
-
"api/cars/cars-router.js" içinde uygun olan her yerde yukarıda açıklanan middleware ve model işlevlerini kullanarak "arabalar" kaynağı için CR (CRUD'den) yazın:
[GET] /api/cars
kimliğe göre sıralanmış bir dizi araba döndürür (veya yoksa boş bir dizi).[GET] /api/cars/:id
verilen kimliğe göre bir araba döndürür.[POST] /api/cars
oluşturulan arabayı döndürür.
-
Beklendiği gibi çalıştıklarını kontrol etmek için uç noktalarınızı "Insomnia" veya "Postman" gibi bir REST istemcisiyle manuel olarak test edin.
-
npm test
i çalıştırarak uç noktalarınızı otomatik olarak test edin.
- Ek dosyalar oluşturabilirsiniz ancak mevcut dosyaları veya klasörleri taşımayın veya yeniden adlandırmayın.
- Ek kitaplıklar yüklemek veya ek komut dosyaları eklemek dışında
package.json
dosyanızı değiştirmeyin. Mevcut kütüphaneleri güncellemeyin. - Uygulamanızda en iyi yöntemleri izlemeniz ve temiz ve profesyonel kodlar yazmanız önemlidir.
Knex seed
kullanarak veritabanına seed verisi ekleyin- API'nize "[PUT]" ve "[DELETE]" işlemlerini ekleyin.
- "Satış" tablosu için bir şema dosyası yazın. Bu tablo, her arabanın satışına ilişkin bilgileri izlemelidir. Her satışı, satılan
arabalar
girişine bağlamak içinforeign keys
ı araştırmak isteyebilirsiniz.