barisskann / fsweb-s14g2-node-db-project-2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Node DB2 Projesi

Giriş

Bu projede, İlişkisel Veritabanında depolanan CARS yönetmek için kullanılabilecek bir API yazacaksınız.

Talimatlar

Görev 1: Proje Kurulumu

Projeyi forlayın, clonelayın ve yazdığınız kodları pushlamayı unutmayın.

Görev 2: MVP

Bir "cars" kaynağı için bir RESTful API oluşturun. Bu API'nin kullanıcısı bir araba satıcısıdır.

Cars Şeması

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

Model İşlevlerini Yazma

  • 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ümlenir
    • getById verilen kimliğe göre bir araba kaydına çözümlenir
    • create yeni oluşturulan araba kaydına çözümlenir

Ara Yazılım Yazma

  • "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.

Arabalar API'sini yazın

  • "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 testi çalıştırarak uç noktalarınızı otomatik olarak test edin.

Notlar

  • 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.

Görev 3: Esnek Görevler

  • 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çin foreign keysı araştırmak isteyebilirsiniz.

About


Languages

Language:JavaScript 100.0%