Bu makalede, Nodejs ve Hapijs kullanılarak API geliştirme süreci ile ilgili temel kavramlar ve adımlar ele alınmaktadır Nodejs, sunucu tarafında JavaScript kodlarının çalıştırılmasını sağlayan açık kaynaklı bir platformdur Hapijs ise Nodejs için geliştirilmiş bir web framework'üdür ve hızlı ve güvenli bir şekilde API geliştirme imkanı sağlar Makalede, örnek uygulamalar ve MongoDB gibi veritabanı sistemleri kullanımı da ele alınmaktadır Hapijs'te en sık kullanılan kavramlar arasında route, handler, server, plugin ve validator yer almaktadır Route, belirli bir URL'ye yapılan isteklerin hangi HTTP yöntemiyle karşılanacağını ve bu isteklerin hangi fonksiyonlar tarafından karşılanacağını belirlemede kullanılır Handler fonksiyonları ise route'lara gelen istekleri işleyerek sonuç döndürür Doğru yapılandırılan route'lar ve handler fonksiyonları, API'lerin verimliliği için önem
Bu makalede, Node.js ve Hapi.js kullanarak API geliştirme işlemi ile ilgili temel kavramlar ve adımlar ele alınacaktır. API geliştirme, son yıllarda oldukça popüler hale geldi ve web uygulamaları ve mobil uygulamalar için önemli bir rol oynamaktadır. Node.js, açık kaynaklı, cross-platform bir JavaScript runtime ortamıdır ve sunucu tarafında JavaScript kodunu çalıştırmak için kullanılır. Hapi.js ise Node.js için geliştirilmiş bir web framework'üdür ve hızlı ve güvenli bir şekilde API geliştirme imkanı sağlar.
Bu makale, Node.js ve Hapi.js kullanarak API geliştirme sürecinde ihtiyaç duyulan temel kavramlar ve adımlar açıklanacaktır. Bununla birlikte, hazırlanacak olan örnek uygulama ile birlikte API geliştirme sürecine dair daha detaylı bilgi edinmeniz mümkün olacaktır. Ayrıca, MongoDB gibi veritabanı sistemlerinin kullanımı ve API dokümantasyonu gibi konular da ele alınacaktır.
Node.js Nedir?
Node.js Nedir?
Node.js, JavaScript programlama dilini kullanan açık kaynak kodlu, cross-platform bir runtime ortamıdır. Node.js, sunucu tarafı uygulamaları geliştirmek için kullanılan modüler bir yapı sunar. Hem ölçeklenebilir hem de performanslı olan Node.js, asenkron programlama yöntemleri kullanarak işlemci kaynaklarını verimli bir şekilde kullanır.
Node.js, Microsoft tarafından geliştirilmiş olan V8 JavaScript motorunu temel alır. Sunucu tarafında çalıştığı için, bir web sayfasının çalışmasını sağlayan JavaScript kodlarını çalıştırmak için kullanılır. Son yıllarda, özellikle web uygulamalarında kullanımı yaygınlaşmıştır.
Node.js, cross-platform olmasının yanı sıra, npm (Node Package Manager) aracılığıyla binlerce açık kaynaklı ve kolayca kullanılabilir paket sunar. Bu paketler, uygulamaların geliştirilmesinde zaman ve iş gücü tasarrufu sağlar.
Hapi.js Nedir?
Hapi.js, Node.js için geliştirilmiş bir web framework'üdür. API geliştirme sürecini kolaylaştırmak ve hızlandırmak amacıyla ortaya çıkmıştır. Hapi.js ile kolay bir şekilde API'ler oluşturabilir ve yönetebilirsiniz.
Hapi.js'in en önemli özelliklerinden biri, hızlı ve güvenli bir API geliştirme süreci sunmasıdır. Ayrıca, istek yönetimi ve doğrulama işlemleri de oldukça kolaydır.
Hapi.js, esnek bir yapıya sahiptir ve birden fazla plugin ile genişletilebilir. Bu sayede ihtiyacınıza göre özelleştirilebilir ve gerekli özellikler eklenebilir.
Bunların yanı sıra, Hapi.js isimli web framework'ü ile hata yönetimi oldukça kolay bir hale gelir. Gelen isteklerin doğruluğu ve kontrolü, istenilen şekilde yapılandırılabilir. Bu sayede oluşabilecek hataların önüne geçilebilir ve güvenli bir API oluşturulabilir.
Temel Hapi.js Kavramları
Hapi.js, Node.js ile birlikte kullanılan bir web framework'üdür. Hapi.js'te en sık kullanılan kavramlar arasında route, handler, server, plugin ve validator yer almaktadır.
Route: Hapi.js'te route, bir URL isteğiyle eşleştirilen HTTP yöntemi ve handler fonksiyonunu içeren bir nesnedir. Örneğin, GET metoduyla "/users" endpoint'i için bir route oluşturmak mümkündür.
Handler: Handler, bir route'a gelen isteği işleyen, gerekli kontrolleri yapan ve sonuç döndüren bir fonksiyondur. Örneğin, "/users" endpoint'i için bir handler fonksiyonu yazılabilir ve bu fonksiyon kullanıcıların listesini döndürebilir.
Server: Server, Hapi.js uygulamasının çalıştığı HTTP sunucusunu temsil eden bir nesnedir. Hapi.js'te server konfigürasyonu oldukça basittir.
Plugin: Plugin, Hapi.js uygulamasına özellik eklemek için kullanılan bir araçtır. Örneğin, JWT kimlik doğrulama plugin'i kullanarak uygulamaya kimlik doğrulama özelliği eklenebilir.
Validator: Validator, gelen istekleri kontrol etmek ve doğrulamak için kullanılan bir araçtır. Hapi.js'te yaygın olarak kullanılan Joi kütüphanesi, istekleri validasyon için kullanılabilir.
Route Nedir?
Route, bir URL isteğiyle eşleştirilen HTTP yöntemi ve handler fonksiyonunu içeren bir nesnedir. Yani, API'lerde belirli bir URL'ye yapılan isteklerin hangi HTTP yöntemiyle karşılandığını ve bu isteklerin hangi fonksiyonlar tarafından karşılanacağını belirlemede kullanılır. Hapi.js'te route'lar server objesi içinde tanımlanır ve birkaç seçenekle yapılandırılabilir.
- Path: Route'nin URL'si.
- Method: HTTP yöntemi (GET, POST, PUT, DELETE, vb.).
- Handler: Route'a yapılan isteği işleyen fonksiyon. Normalde, isteğin kontrolünü sağlar ve sonuç döndürür.
- Config: İsteğe bağlı ayarlar nesnesi.
Route'lar genellikle API'nin en önemli parçalarından biridir ve doğru yapılandırılmaları API'nin performansını etkileyebilir. Dolayısıyla, Hapi.js gibi bir web framework'ü kullanarak, route'ların doğru bir şekilde tanımlanması API'lerin verimliliği için önemlidir.
Handler Nedir?
API geliştirme sürecinde Handler, oldukça önemli bir kavramdır. Route'lara gelen istekleri işleyen, gerekli kontrolleri yaparak sonuç döndüren bir fonksiyondur. Handler fonksiyonları, API'nin çeşitli işlemlerini gerçekleştirir ve sonuçları kullanıcılara gönderir.
Hapi.js kullanarak bir Handler fonksiyonu oluşturmak oldukça basittir. Öncelikle işlem yapılacak olan route belirtilir. Sonra handler fonksiyonu tanımlanır ve gerekli kontroller yapılır. En sonunda sonuç, kullanıcılara döndürülür.
Hapi.js Handler Fonksiyonu Oluşturma |
---|
server.route({ |
'method': 'GET', |
'path': '/musteriler', |
'handler': function (request, reply) { |
// İşlem yapılacak kodlar buraya yazılır |
}} |
Yukarıdaki örnekte, server.route() fonksiyonu ile bir route tanımlanır. 'Method' ve 'path' belirtilerek, hangi URL ve HTTP yöntemi kullanılarak istek alınacağı belirlenir. 'Handler' fonksiyonunda ise, gerekli işlemler yapılır ve sonuç kullanıcılara döndürülür.
Hapi.js, Handler fonksiyonları oluşturmanın yanı sıra, bu fonksiyonlara 'payload', yani gelen verilerin kontrolü yapılabilmesi için 'hapi/joi' modülünü kullanarak validator ekleyebilir. Validator'lar, gelen istek verilerinin uygunluğunu kontrol ederek kullanıcılara hata mesajı döndürebilir.
Bir Handler fonksiyonu, API'nin en önemli kavramlarından biridir ve doğru çalıştığı takdirde, API'nin isteklere verilen yanıtları sağlıklı şekilde gerçekleştirilir.
Server Nedir?
Server Nedir?
Hapi.js, bir web framework'üdür ve uygulamaların bir HTTP sunucusu üzerinde çalışmasına olanak tanır. İşte burada da Server devreye girmektedir. Server, Hapi.js uygulamasının çalıştığı HTTP sunucusunu temsil eden bir nesnedir. Yani, Hapi.js uygulamasının yayın yapacağı sunucuyu belirlemek için kullanılır.
Server özellikleri, connection, start, stop gibi metodlarla kullanılabilir. Ayrıca, Hapi.js'teki server yönetimi oldukça esnektir ve birden fazla HTTP sunucusu çalıştırılabilir. Bu imkan sayesinde farklı protokoller, farklı portlar veya SSL sertifikaları kullanarak HTTP sunucuları oluşturmak mümkündür.
Plugin Nedir?
Plugin, Hapi.js uygulamasına özellik eklemek için kullanılan bir araçtır. Hapi.js, esnek ve modüler bir yapıya sahiptir. Bu nedenle, uygulamaya özellik eklemek için farklı seçenekler sunar. Bir plugin, uygulamadaki belirli bir işlevselliği uygulamak için tasarlanmış bir Javascript modülüdür.
Hapi.js, çeşitli önceden hazırlanmış plugin'ler sunarak geliştiricilere büyük bir kolaylık sağlar. Bu plugin'ler sayesinde, uygulamalara gerekli özellikleri eklemek çok daha hızlı ve kolay hale gelir.
Bununla birlikte, kendi özel plugin'lerinizi de kolaylıkla oluşturabilirsiniz. Bir plugin, Hapi.js'de bir Javascript modülü olarak tanımlanır. Plugin, bir özellik eklendiğinde veya uygulama için bazı işlevselliğe ihtiyaç duyulduğunda kullanılabilir. Örneğin, uygulamanıza cache özelliği ekleyebilirsiniz veya uygulamanın güvenliğini artırmak için güvenlik plugin'leri kullanabilirsiniz.
Plugin'ler, Hapi.js uygulamaları için güçlü ve kullanımı kolay bir araçtır. Önceden hazırlanmış plugin'lerin yanı sıra, kendi özel plugin'lerinizi de kolaylıkla oluşturabilirsiniz. Bu sayede, uygulamanıza özellik eklemek çok daha hızlı ve kolay hale gelir.
Validator Nedir?
API'lerde kullanıcılardan gelen verilerin doğruluğunu kontrol etmek çok önemlidir. Bu nedenle Hapi.js'te oluşturulan API'lerde kullanılabilecek validator aracı, gelen istekleri kontrol etmek ve doğrulamak için kullanılır. Validator, gelen verilerin biçimini, boş bırakılan alanları ve gereksiz karakterleri kontrol edebilir.
Validator kullanarak gelen verilerin hatalı olduğu durumlarda uygun bir hata mesajı da döndürülebilir. Validator'ın aynı zamanda güvenlik açısından da önemi büyüktür. Örneğin, gelen verilerin SQL enjeksiyonu veya cross-site scripting'e karşı korunan bir şekilde işlenmesi gerekiyor.
Validator kullanmak için Hapi.js'in validate özelliği kullanılabilir. Bu özellik, her hangi bir istek öncesinde veya sonrasında çalıştırılabilir. Bu sayede gelen verilerin doğruluğu kontrol edilerek, istekte gönderilen verilerdeki hatalar engellenebilir. Hapi.js, validator olarak Joi adlı bir aracı kullanır. Joi, istek verilerinin biçimini, veri türünü ve diğer gereksinimleri kontrol ederek, verilerin hatalı olması durumunda uygun bir hata mesajı döndürür.
Özellik | Açıklama |
---|---|
required() | Alanın zorunlu olup olmadığını belirler |
min(num) | Minimum değeri ayarlar |
max(num) | Maksimum değeri ayarlar |
Validator kullanımı, API'lerin güvenliği ve doğruluğu için son derece önemlidir. API'lerin kullanımını daha da kolaylaştıran validator, Hapi.js'ın sağladığı ve olmazsa olmaz araçlardan biridir.
API Geliştirme Adımları
API geliştirirken belirli adımlar takip edilerek ilerlenebilir. Bu adımlar şunlardır:
- Veritabanı Bağlantısı: Veritabanı bağlantısı, API geliştirirken önemli bir adımdır. MongoDB veya diğer veritabanları API için kullanılabilir.
- Route Tanımlama: API'de kullanılacak olan route'lar belirlenerek tanımlanmalıdır. Her route bir URL isteği ve HTTP yöntemi ile eşleştirilir.
- Handler Fonksiyonları Yazma: API'de kullanılacak olan route'lara gelen istekleri işleyecek olan handler fonksiyonları yazılmalıdır.
- Doğrulama ve Kontrol: Gelen isteklerin doğruluğu ve kontrolü yapılmalıdır. Bu adım, API'nin doğru çalışmasını ve güvenli olmasını sağlar.
- API Dokümantasyonu: API'nin kullanımı için dokümantasyon yazılmalıdır. Bu, API'nin kullanımını kolaylaştırır ve geliştiricilerin API'yi daha hızlı anlamasını sağlar.
Bu adımlar takip edilerek, kolayca ve hızlı bir şekilde bir API geliştirilebilir. Adımların her birinde doğru bir yaklaşım ve iyi bir planlamayla, API geliştirme süreci çok daha verimli hale gelebilir.
Veritabanı Bağlantısı
API geliştirirken veritabanı bağlantısı kurmak oldukça önemlidir. Veritabanı bağlantısı kurulduktan sonra API içerisinde kullanılacak verileri almak mümkün hale gelir. Bu işlem için genellikle MongoDB kullanılmaktadır.
MongoDB, NoSQL bir veritabanıdır ve JSON formatında belgeler şeklinde veri depolar. MongoDB, Node.js ve Hapi.js ile uyumlu çalışabilecek şekilde tasarlanmıştır ve bu yüzden API geliştirme sürecinde yaygın bir şekilde kullanılmaktadır.
Veritabanı bağlantısı kurmak için öncelikle MongoDB yüklü olmalıdır. Daha sonra, Node.js için MongoDB sürücüsü olan Mongoose kullanılabilir. Mongoose, MongoDB veritabanı üzerinde yapılan işlemleri Node.js üzerinde çalıştırabilmenizi sağlar.
Bağlantı oluşturulduktan sonra API üzerinden veri ekleme, silme, güncelleme ve sorgulama işlemleri gerçekleştirilebilir. Bu sayede veriler güncel tutulur ve API'ın çalışmasında kullanılan verilerin doğruluğu sağlanmış olur.
MongoDB kullanımı oldukça verimli ve esnektir. API geliştirme sürecinde, verilerin kaydedilmesi ve işlenmesi için MongoDB gibi modern bir veritabanı seçimi, API'ın verimli çalışmasını sağlar.
Route Tanımlama
API geliştirirken, kullanılacak olan route'lar belirlenerek tanımlanması önemlidir. Route, bir URL isteği ile eşleştirilen HTTP yöntemi ve handler fonksiyonunu içeren bir nesnedir. Bu nesne, API'nin hangi URL'lerle iletişime geçeceğini belirtir.
Örneğin, bir kullanıcının profil bilgilerini istemek için '/api/users/{id}' gibi bir URL kullanılabilir. Burada HTTP GET yöntemi kullanılarak istek yapıldığında, handler fonksiyonu bu isteği işler ve kullanıcının profil bilgilerini döndürür. Benzer şekilde, HTTP POST yöntemi kullanarak yeni bir kullanıcı oluşturmak için '/api/users' URL'i kullanılabilir ve handler fonksiyonu bu isteği işleyerek, yeni kullanıcının verilerini kaydedebilir.
Route tanımlanırken, HTTP yöntemi, URL ve handler fonksiyonu belirtilir. Ayrıca, route'lar arasında öncelik sırası da belirlenir. İşlevsel bir API geliştirirken, belirli bir düzendeki URL'ler kullanmak, API'yi daha kolay anlaşılır kılarak, daha iyi bir kullanıcı deneyimi sağlar. Bununla birlikte, route'ların nasıl tanımlandığı ve hangi yöntemlerle eşleştikleri gibi isteklere cevap veren önemli bir kısım olan handler fonksiyonları da doğru şekilde yazılmalıdır.
API geliştirirken belirlenecek olan route'ların sayısı, API'nin karmaşıklık düzeyi ve genel kullanım amacı gibi faktörlere bağlıdır. Birkaç route kullanımı ile basit bir API oluşturulabileceği gibi, birçok route kullanarak kapsamlı bir API da oluşturulabilir.
Handler Fonksiyonları Yazma
API'nin en önemli parçalarından birisi handler fonksiyonlarıdır. Handler fonksiyonları, route'lara gelen istekleri işleyen, gerekli kontrolleri yapan ve sonuç döndüren fonksiyonlardır.
Handler fonksiyonlarını yazarken, gelen isteklerin verilerini ayrıştırmak, gerekli işlemleri yapmak ve son olarak bir yanıt döndürmek gerekmektedir. Bu işlemleri yaparken, Hapi.js'in sağladığı araçlardan faydalanabilirsiniz.
Ayrıca, handler fonksiyonlarına gelen isteklerin doğruluğunu kontrol etmek de oldukça önemlidir. Bunun için Hapi.js'in sağladığı validator aracını kullanabilirsiniz. Böylece, hatalı ya da eksik verilerin önceden kontrol edilerek, uygulama çalışma süresinde beklenmedik hataların önüne geçilmesi sağlanabilir.
Aşağıdaki örnek, Hapi.js kullanarak yapılan basic bir handler fonksiyonudur:
```function handlerFunction(request, reply) { const message = 'Merhaba ' + request.params.name; return reply(message);}```Burada, request objesi sayesinde gelen isteklerin bilgilerine erişilirken, reply objesi ile de sonuç döndürülür. Bu şekilde, route'lara gelen isteklerin karşılanması ve sonuçların döndürülmesi işlemi handler fonksiyonları sayesinde gerçekleştirilebilmektedir.
Doğrulama ve Kontrol
Gelen isteklerin doğruluğu ve kontrolü API geliştirme sürecinde oldukça önemlidir. Bu adım sayesinde API'nin sağlıklı ve güvenli çalışması sağlanabilir.
Doğrulama ve kontrol işlemleri için Hapi.js'te validator araçları kullanılabilir. Bu araçlar sayesinde gelen isteklerin parametreleri kontrol edilir ve hatalı istekler engellenir. Böylece API'ye yapılan isteklerin doğru ve güvenli olması sağlanmış olur.
Ayrıca, kullanıcı doğrulama işlemleri de bu adımda yapılabilir. Örneğin, API'ye yapılan isteklerin sadece belirli kullanıcılar tarafından gerçekleştirilmesi isteniyorsa, kullanıcı doğrulama işlemi yapılabilir. Bu şekilde API'nin sadece doğru kullanıcılara açık olduğu kontrol edilir.
Doğrulama ve kontrol işlemleri sırasında oluşan hatalar API'nin hatalı çalışmasına neden olabilir. Bu nedenle, her adımın doğru şekilde kontrol edilmesi, hataların tespit edilmesi ve gerekli düzenlemelerin yapılması önemlidir.
API Dokümantasyonu
API kullanıcıları için API dokümantasyonu oldukça önemlidir. Kullanıcıların API hakkında bilgi edinmesine ve doğru kullanımının sağlanmasına yardımcı olur. Dokümantasyon, API'nin kullanımı, endpoint'ler ve istek ve cevap formatları hakkında ayrıntılı bilgi içermelidir.
Dokümantasyon, HTML veya markdown gibi uygun formatlarda yazılabilir. Basit bir tablo, endpoint'lerin listesi veya istekte kullanılması gereken parametreler ve değerleri içeren bir liste oluşturmak gibi yöntemler kullanılabilir. API dokümantasyonu aynı zamanda API'nin hangi sürümlerinin kullanımda olduğunu ve ne zaman güncellendiğini de içermelidir.
API dokümantasyonuna ek olarak, Swagger veya Postman gibi araçlar kullanılarak otomatik belgeler üretilmesi de mümkündür. Bu araçlar, API kullanıcılarının API'yi anlamalarına ve doğru şekilde kullanmalarına yardımcı olur.
Sonuç olarak, API dokümantasyonu, API'nin kullanımı hakkında açıklayıcı ve bilgilendirici bir kaynak sağlar. Doğru yazılırsa, API'nin kullanımını kolaylaştırır ve geliştiricilerin işlerini daha da hızlandırır.
Örnek Uygulama
Bu örnek uygulama, bir restoran müşteri verileri API'si oluşturmak için hazırlanmıştır. Uygulamada kullanılan HTTP metodları "GET", "POST", "PUT" ve "DELETE" dir.
İlk adım olarak, MongoDB veritabanına bağlantı kurulması gerekmektedir. Bu, veritabanı bağlantısı kurmak için "mongoose" adlı bir plugin kullanarak gerçekleştirilebilir. Daha sonra, kullanılacak olan route'lar oluşturulur. Bu örnekte kullanılan route'lar "Müşteri Listesi", "Müşteri Ekleme", "Müşteri Güncelleme" ve "Müşteri Silme" dir. Bunun yanı sıra, her bir route'a ait handler fonksiyonları da yazılmalıdır.
Handler fonksiyonları, her bir route için gelen istekleri işlemek ve sonuç döndürmek için kullanılır. Bu örnekte, "Müşteri Listesi" için gelen istekleri karşılayacak olan handler fonksiyonu şöyle yazılabilir:
HTTP Metodu | Route | Handle Fonksiyonu |
---|---|---|
GET | /customers | function(request, h) { const customers = //veritabanından müşterileri al return customers; } |
Bu örnekte, "Müşteri Listesi" için gelen "GET" isteği "/customers" route'una eşleştirilir ve "customers" adında bir dizi içerisinde veritabanından müşteri verileri alınır. Sonuç olarak, bu veriler doğrudan istemciye döndürülür.
Bu örnekte ayrıca, gelen isteklerin doğruluğunu doğrulamak ve kontrol etmek için bir validator kullanımı gösterilir. "Müşteri Ekleme" işlemi için gelen isteklerin doğrulanması için "Joi" adlı bir validator kullanılabilir. Bu, JSON nesnelerini doğrulamak için kullanılan bir pakettir.
- Müşteri Ekleme için route:
- HTTP Metodu: POST
- Route: /customers/add
- Handler Fonksiyonu: function(request, h) { const customer = request.payload; //gelen isteği kontrol etmek için Joi kullanımı const { error, value } = Joi.validate(customer, customerSchema); if (error) throw Boom.badRequest(error.message); //veritabanına müşteri ekle return newCustomer; }
Bu örnekte, "Müşteri Ekleme" işlemi için gelen "POST" isteği "/customers/add" route'una eşleştirilir. İstek içeriğinde bulunan müşteri bilgileri "customer" adında bir değişkene atanır. Daha sonra, müşteri nesnesinin doğruluğunu kontrol etmek için "Joi" kullanılır. Eğer hata varsa, "Boom.badRequest" ile uygun bir hata mesajı döndürülür. Son olarak, veritabanına yeni müşteri kaydedilir ve sonuç olarak eklenen müşteri verileri istemciye döndürülür.
Bu örnek uygulama, Node.js ve Hapi.js kullanarak kolayca bir API geliştirme örneği sunmaktadır. Kullanılan kavramlar açıklandıktan sonra, bir uygulama geliştirmek için kolayca başlanabilir.
Sonuç
Node.js ve Hapi.js kullanarak API geliştirmenin oldukça hızlı ve kolay olduğunu görebiliriz. Node.js runtime ortamı için geliştirilen Hapi.js framework'ü ile API tasarımı ve geliştirme aşamaları oldukça basitleştirilmiştir. Hapi.js sayesinde, geliştiriciler API'leri kolayca tasarlayabilir, doğrulayabilir ve test edebilirler. Bu nedenle, API geliştirme projelerinde Node.js ve Hapi.js kullanmak işlerinizi kolaylaştıracaktır.
Bununla birlikte, API geliştirme aşamalarını doğru ve etkili bir şekilde yönetmek, veritabanı bağlantısı ve API dokümantasyonu gibi konulara da özen göstermek gerekmektedir. Örnek uygulama geliştirme süreci takip edilerek, Node.js ve Hapi.js kullanarak API geliştiren birçok geliştirici için başlangıç noktası oluşturulabilir. Sonuç olarak, API geliştirmenin bu güçlü araçları sayesinde kolaylaştığını ve hızlandığını söyleyebiliriz.