Nedir bu FeathersJS?

Atakan Savaş
3 min readApr 13, 2020

Hellö. Bu yazida feathersjs nedir, neden populerdir ve neden kullanilir gibi konulara aciklik getirmeye calisacagim. Cunku tam olarak kendim de ogrenmek istiyorum.

Nodejs ile server side api gelistirmek istendiginde genelde isimizi kolaylastirmak icin express veya restify gibi kutuphaneleri kullaniyoruz. Bu tarz kutuphaneler bizim isimizi cok kolaylastirabiliyor. Tabi bunu nasil yaptigi onemli bir nokta. Cunku bu tarz kutuphaneler bize kolay route yapimini saglarken, servislerimize mudahale etmiyorlar.

Servislere mudahale edilmemesi su demek, kendiniz bir repository pattern veya buna benzer bir pattern olusturmaniz demek. Bunu yapmazsaniz, birbirini tekrar eden kodlar cogalacak demektir.

FeathersJs nedir?

Problemi acikladigima gore, FeathersJs’in cikis noktasini belirtmis oldum. Asil amaci nodejs ile server side proje gelistirmek. Kendilerini “A framework for real-time applications and REST APIs” olarak nitelendiriyorlar. Bence guzel bir nokta.

Feathersjs’i kolay bir kullanimi var. Bilgisayara program kurar gibi projeye bir servis ekleyebiliyorsunuz. Revize etmek icin kodlari hazirliyor. Typescript destekliyor ve express catisi altinda calisiyor.

Nasil yapilir?

FeathersJs ile proje olusturmak icin oncelikle cli paketini globale kurmaniz gerekli. Bu cli paketi bizim tum ayarlarimizi yapacagimiz paketi indiriyor.

npm install @feathersjs/cli -g

Feathersjs cli kurulduktan sonra, bir proje ve arkasindan bir servis olusturuyorum.

generate app => bu method bize express catisi altinda bir nodejs projesi olusturuyor. Olustururken bir setup icerisinde parametleri istiyor bizden. Javascript veya Typescript mi olacak, real time destekleyecek mi, hangi paket sistemini kullanacak gibi. Bu islem bittikten sonra hali hazirda projemiz oluyor. Fakat isimiz bitmedi, bir servis eklememis gerekiyor.

Servis nedir?

FeathersJs, servis terimini genel olarak bir veritabani tablosu veya dokumani olarak dusunulebilir. Istediginiz db icin size connection, controller, model, schema dosyalarini olusturuyor. Haliyle kod yazmadan bir projeyi direk ayaga kaldirabiliyorsunuz.

Servis olustururken What kind of service is it? diye bir soru yoneltiyor. Bu sizin veritabaninizin ne oldugu ve nasil baglanmak istediginize gore degisebiliyor. Bir liste geliyor. Icinden istediginizi secebiliyorsunuz. Listede sequalize , mongodb , mongoose , in memory gibi degerler var. Hepsi baska bir paketler. Neler olduklarini arastirarak bulabilirsiniz tabii ki.

Sonuc?

Sonuc olarak size bir structure olusturuyor. Nasil mudahale edilebilecegini detaylandirayim biraz.

Config

Size bir config klasoru olusturuyor. Bu klasorun altinda default.json diye bir dosya var. O dosyanin icinde host bilgisi, connection string bilgisi gibi bilgiler tutuluyor. Bir nevi .env dosyasi gibi dusunulebilir.

{"host": "localhost","port": 3030,"public": "../public/","paginate": {"default": 10,"max": 50},"mongodb": "mongodb://localhost:27017/feathers_project_1"}

Model

Model klasoru icinde, servisi hangi isimle olusturduysaniz o isimde bir js dosyasi olusuyor. Relational db’ler icin tablo, nosql db’ler icin dokuman gibi dusunebilirsiniz bunu.

module.exports = function (app) {const modelName = 'metrics';const mongooseClient = app.get('mongooseClient');const { Schema } = mongooseClient;const schema = new Schema({text: { type: String, required: true }}, {timestamps: true});if (mongooseClient.modelNames().includes(modelName)) {mongooseClient.deleteModel(modelName);}return mongooseClient.model(modelName, schema);};

Sonuc

Velhasil, artik mongoose kullanarak metrics semasina giden ve datayi ceken bir projeniz hazirlandi. Test icin projeyi calistirip http://localhost:3030/contacts url’ine gidebilirsiniz. Size bos bir sonuc donecektir cunku connection string degerimiz gecerli degil.

FeathersJs boyle bir sey yani. Begendim.

--

--