Skip to content

Workintech/fsweb-s13g3-node-api-project-3

Repository files navigation

Express Ara Yazılı (middleware) Modül Projesi

Bu görevde, bir API oluşturursunuz ve "Minimum Uygulanabilir Ürün" bölümünde listelenen gereksinimleri karşılayan özel ara katman yazılımı yazarsınız.

Talimatlar

Görev 1: Proje Kurulumu

Canvas'taki ödev sayfanız, bu projeyi göndermek için talimatlar içeriyor. Bulamadıysanız, Okul Personeli ile iletişime geçin.

Görev 2: MVP

  • api/server.js ve index.jsyi tamamlayarak uygulamayı birbirine bağlayın.
  • api/middleware/middleware.js içine aşağıda ayrıntıları verilen dört özel ara katman yazılımı işlevi yazın.
  • Özel ara yazılımları uygulamadanın uygun yerlerinde kullanın (belirli uç noktalar, tüm yollar veya genel olarak).
  • users-router.js dosyasında, bir user tarafından posts listesini almak ve bir user için yeni bir post depolamak için uç noktalar vardır.

Özel Ara Yazılım Gereksinimleri

  • logger()

    • logger her istek(request) hakkında şu bilgileri konsola kaydeder: istek metodu, istek url'si ve bir zaman damgası(timestamp)
    • bu ara yazılım, API'ye yapılan her istekte çalışır
  • validateUserId()

    • bu ara yazılım, url'de bir id parametresi içeren tüm kullanıcı uç noktaları için kullanılacaktır. (örnek: /api/users/:id ve bu kimliğe sahip bir kullanıcı olduğundan emin olmak için veritabanını kontrol etmelidir.
    • id parametresi geçerliyse, kullanıcı nesnesini req.user olarak saklayın ve isteğin devam etmesine izin verin
    • id parametresi veritabanındaki herhangi bir kullanıcı kimliğiyle eşleşmiyorsa, 404 durumu ve { mesaj: "kullanıcı bulunamadı" } ile yanıt verin
  • validateUser()

    • validateUser, bir kullanıcı oluşturmak veya güncellemek için bir istekte bodyyi doğrular
    • istek gövdesinde gerekli name alanı yoksa, 400 durumu ve { mesaj: "gerekli name alanı eksik" } ile yanıt verin
  • validatePost()

    • validatePost, yeni bir gönderi oluşturma isteğinde body öğesini doğrular
    • istek gövdesinde gerekli text alanı yoksa, 400 durumu ve { mesaj: "gerekli text alanı eksik" } ile yanıt verin

Veritabanı Kalıcılığı Yardımcıları

users ve posts verilerinin kalıcılığını yönetmek için kullanabileceğiniz iki yardımcı dosya vardır. Bu dosyalar api/users/users-model.js ve api/posts/posts-model.js dosyalarıdır. Her iki dosya da aşağıdaki api'yi yayınlar:

  • get(): find çağrılması, veritabanında bulunan tüm kaynakların bir dizisine çözümlenen bir Promise verir.
  • getById(): argüman olarak bir id alır ve bulunursa bu kimliğe sahip kaynağa çözümlenen bir Promise verir.
  • insert(): insert çağırmak, onu bir kaynak nesnesinden geçirmek, onu veritabanına ekler ve yeni kaynağı döndürür.
  • update(): iki bağımsız değişkeni kabul eder, ilki güncellenecek kaynağın kimliği ve ikincisi uygulanacak değişikliklere sahip bir nesnedir. Başarılı olduğunda, güncellenmiş kaydı döndürür.
  • remove(): remove yöntemi, birinci parametresi olarak bir kimlik kabul eder ve kaynağı veritabanından başarıyla sildikten sonra, silinen kayıt sayısını döndürür.

users-model.js, getUserPosts() adında, bir kullanıcının kimliği iletildiğinde, user için tüm posts bir listesini döndüren fazladan bir yöntem içerir.

Tüm yardımcı yöntemler bir Promise verir.

Veritabanı Şeması

Users ve posts kaynakları için Veritabanı Şemaları:

Users
field data type metadata
id unsigned integer primary key, auto-increments, generated by database
name string required, unique
Posts
field data type metadata
id unsigned integer primary key, auto-increments, generated by database
text text required
user_id unsigned integer required, must be the id of an existing user

Kaynaklar için test verileri sağladık.

Önemli Notlar

  • npm run resetdb komutunu çalıştırarak veritabanını sıfırlayabilirsiniz.
  • Postman veya HTTPie kullanarak çalışmanızı manuel olarak test edin. "npm test" komutuyla otomatik testleri çalıştırın.
  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published