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.jsiçine yazın:getAllbir dizi araba kaydına (veya boş bir diziye) çözümlenirgetByIdverilen kimliğe göre bir araba kaydına çözümlenircreateyeni 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.paramsiç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/carskimliğe göre sıralanmış bir dizi araba döndürür (veya yoksa boş bir dizi).[GET] /api/cars/:idverilen kimliğe göre bir araba döndürür.[POST] /api/carsoluş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 testi çalıştırarak uç noktalarınızı otomatik olarak test edin.
-
Testleri çalıştırmadan önce proje dizinindeki
user.jsondosyasını bulun veuser_idalanını NextGen proje ekranında görünen kendiuser_iddeğeriniz ile güncelleyin. -
Otomatik testleri çalıştırmak için
npm testkomutunu kullanın. -
Test skorlarını NextGen'e
npm run sendresultskomutu ile kaydedin. -
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.jsondosyanı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 seedkullanarak 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
arabalargirişine bağlamak içinforeign keysı araştırmak isteyebilirsiniz.