Altbilgi içeriğine atla
NODE YARDıM

NestJS Node.js (Geliştiriciler İçin Nasıl Çalışır)

Esnek ve ileriye dönük bir Node.js çerçevesi olan NestJS, etkili ve ölçeklenebilir arka uç uygulamalar ve genişletilebilir ön uç uygulamalar oluşturmak için tasarlanmıştır. JavaScript'in statik olarak tip edilen bir üst kümesi olan TypeScript'i kullanarak kod sürdürülebilirliği ve geliştirici verimliliğini artırır. NestJS, fonksiyonel programlama (FP), nesneye yönelik programlama (OOP) ve fonksiyonel reaktif programlama (FRP) ilkelerini içeren sağlam ve modüler bir tasarıma sahiptir. (FRP) NestJS, geliştirme surecini basite indirerek ve moduller, bagimli enjeksiyon ve dekoratorlere buyuk onem vererek çok test edilebilir ve surdurulebilir kod yazmayi tesvik eder.

Aksine, IronPDF, Node.js uygulamalarinda PDF belgeleri oluşturmak, duzenlemek ve calismak icin yapilmis guclu bir kutuphanedir. HTML'yi PDF'ye dönüştürebilir, PDF'leri birlestirebilir, filigran ekleyebilir ve PDF'lerden metin ve resimleri cikartabilir, ve daha bircok fonksiyon sunar. IronPDF, PDF'leri dinamik olarak oluşturmak ve yonetmek icin basit bir API sunar ve Node.js yayginlasabilir sunucu-tarafli uygulamalariyla kolayca entegre olur.

Geliştiriciler, NestJS ve IronPDF'yi bir araya getirerek dinamik PDF oluşturma ve yonetimine ihtiyaç duyan karmasik ve buyuk online uygulamalar tasarlayabilirler. Raporlar, faturalar ve diğer belge odakli işlemler ureten uygulamalar bu entegrasyondan özellikle faydalanabilir. IronPDF'nin guclu PDF yetenekleri ve NestJS'nin duzenli ve moduler tasarim yardimiyla, geliştiriciler yuksek performansli uygulamalar ve gelişmiş belge işleme özelliklerine sahip harika projeler oluşturabilirler.

NestJS Nedir?

NestJS, Node.js sunucu-tarafli uygulama geliştirme icin etkili ve yayginlasabilir acik kaynakli, ilerici bir cercevedir. TypeScript ile yazilmistir ve geliştirici verimliligini Arttirmak icin modern JavaScript özellikleri ile gelişmiş Angular'dan etkilenen moduler bir mimari kullanir. NestJS, bagimli enjeksiyon ve dekoratorleri kullanarak iyi organize edilmis kodu tesvik eder ve bu, çok test edilebilir ve surdurulebilir uygulamalar ile sonuclanir.

HTTP, WebSockets ve gRPC gibi bircok tasima katmanini desteklediginden, geliştiriciler cerceve ile genis bir uygulama yelpazesi tasarlayabilirler. Adapte edilebilirligi ve popüler Node.js cerceveleri olan Express ve Fastify ile sorunsuz entegrasyonu sayesinde çok yonluluk ve dayaniklilik sunar. NestJS, veritabanlari, kimlik doğrulama ve doğrulama icin yerlesik destek saglayarak geliştiricilere karmasik uygulamalar oluşturma işlemini daha kolay hale getirir.

Genis kapsamli Nest CLI, ayrintili dokümanlar ve canli bir topluluga sahip olmasi nedeniyle, verimli sunucusuz cozumler, mikro hizmetler ve şirket seviyesinde uygulamalar icin perfect bir aractir. Moduler tasarimi, yayginlastirilabilirligi ve bakimini kolaylastiracagini garantileyerek, gunumuzun internet geliştirme araclari icin popüler bir secimdir. Geliştiricilerin genişletilebilir on-uc uygulamalar oluşturmasina ve geliştirici verimliligini Arttirmasina izin verir.

NestJS Node.js (Geliştiriciler Icin Nasıl Calisir): Sekil 1 - NestJS

NestJS'nin Özellikleri

TypeScript Destegi

TypeScript, gelişmiş otomatik tamamlama, tip guvenligi ve modern dil özellikleri sunan JavaScript'in statik tipli bir alt seti, NestJS'nin insasinda kullanilir. Bu, kodun surdurulebilirligini arttirir ve derleme sirasinda hatalrin tespitini yardimci olur. NestJS, TypeScript'in yani sira JavaScript'i de varsıyılan olarak destekleyerek, geliştiricilere daha fazla ozgurluk saglar.

Moduler Mimari

NestJS, moduler tabanli kod organizasyonunu tesvik eder. Kontrolcüler, saglayicılar ve hizmetler gibi ilgili bilesenler tek bir modulde kapsamlandiginda, kodun surdurulmesi, genişletilmesi ve organize edilmesi daha kolay hale gelir. Uygulama modulleri, baska alanlarda kullanilabilir ve DRY (Don't Repeat Yourself) felsefesini tesvik eder.

Bagimli Enjeksiyon

NestJS'nin en buyuk özelliklerinden biri olan gelişmiş bagimli enjeksiyon sistemi, bagimliliklarin yonetimini kolaylastirir. NestJS, bagimliliklari sert kodlama yerine enjekte ederek, gevsek baglantili ve test edilebilir bilesenler yaratir. Bu tarz ayrica, daha moduler kod ve geliştirilmis ilgi ayirimi saglar.

Dekoratorler

NestJS'de siniflarin ve bunlarin uyelerinin oluşturulmasi ve ayarlanmasi icin dekoratorler genis oranda kullanilir. Dekoratörlerin, örneğin @Controller(), @Get(), @Post(), @Injectable() ve diğerleri, kullanımı, uygulamanın her bir bileşeninin ne yaptığını ve nasıl davrandığını ortaya koyarak kodun okunabilirliğini ve ifade edilebilirliğini artırır.

Express ve Fastify ile Uyumluluk

Uyarlanabilirligi nedeniyle, NestJS, geliştiricilere altdaki HTTP sunucusu olarak Fastify veya Express'i kullanma secenegi sunar. Fastify daha iyi performans sunarken, Express, kullanıcı dostu ve etkili olmasi ile unlu. Bu çok yonluluk, geliştiricilerin uygulamalarini ozgu gereksinimlere uygun hale getirmelerine izin verir.

Ara Yazilim

NestJS, Express gibi ara yazilim islevselliklerini destekler. Ara yazilimlar, istekler tanimli rotalarina ulasmadan once ele alinabilir ve bu da govde ayrimi, kimlik doğrulama ve kayıt tutma gibi özellikleri saglar. Bu, yineleyen mantiklarini yazmak icin istekler icin kullanilabilir.

Istisna Yonetimi

NestJS, programcilarin ozel istisna filtreleri oluşturmasina olanak tanıyan guclu bir istisna yonetimi sistemine sahiptir. Bu filtreler, standart bir bicimde istisnalari yakalayarak ve yoneterek uygulama genelinde hatalarin yonetimini düzeltebilir ve yanit tutarliligini Arttırabilir.

Borular ve Koruyucular

Borular: Veri donusumu ve doğrulama, borular kullanilarak yapilir. Borular, kontrolcu duzeyinde, rota yoneticisi duzeyinde veya genel olarak uygulanabilir. Doğrulama ve donusum borulari dahildir ve ozel borular da yapilabilir.

Koruyucular: Koruyucular, yetkilendirme ve kimlik doğrulama icin mantigi uygular. Kullanıcı rolleri veya izinlerini kontrol etmek gibi ozel kurallar kullanarak bir istemin onaylanip onaylanmayacagina karar verirler.

NestJs Oluşturma ve Yapılandırma

NestJS projesi, basit birkaç adimda oluşturulabilir ve yapılandırilabilir. Yeni bir proje oluşturmak icin ilerlemenizi saglayacak kapsamli bir nasıl yapilir.

NestJS CLI'yi Yukleyin

Yarn veya npm ile global olarak ilk olarak NestJS CLI'yi yukleyin.

npm install -g @nestjs/cli
npm install -g @nestjs/cli
SHELL

Yeni Bir Proje Oluşturun

Yeni bir NestJS projesi başlatmak icin CLI kullanin. "my-nest-app"'i istediginiz projenin adina değiştirin.

nest new my-nest-app
nest new my-nest-app
SHELL

Proje Yapisi

Standart proje yapisi kisa bir ozetidir:

src/
├── app.controller.ts
├── app.controller.spec.ts
├── app.module.ts
├── app.service.ts
├── main.ts
test/
├── app.e2e-spec.ts
└── jest-e2e.json
  • app.controller.ts: Uygulamanin ana kontrolcusunu icerir.
  • app.service.ts: Uygulamanin ana hizmetini icerir.
  • app.module.ts: Uygulamanin kok module.
  • main.ts: Uygulamanin giris noktasi.

Yapılandırma Modulu

Yapılandırmaları yönetmek için @nestjs/config paketini yükleyin.

npm install @nestjs/config
npm install @nestjs/config
SHELL

Yapılandırma modülünü app.module.ts dosyasına ekleyin.

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true, // Make the module global
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

Ortam degiskenlerine erişim icin yapılandırma saglayicisini kullanin.

import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';

@Injectable()
export class AppService {
  constructor(private configService: ConfigService) {}

  getHello(): string {
    return `Hello World!`;
  }
}

NestJS Node.js (Geliştiriciler Icin Nasıl Calisir): Sekil 2 - NestJS Proje Ciktisi

Başlarken

Başlamak icin, NestJS ve IronPDF kullanarak dinamik olarak uretilen veriler ile bir PDF belgesi oluşturan bir örnek uygulama yapacagiz. Bu, adim adim giden ayrintili bir talimat kitabi.

IronPDF Nedir?

PDF'leri oluşturma, duzenleme ve yonetme surecini daha basit hale getirmek icin IronPDF adi verilen bir uygulama kutuphanesi oluşturuldu. Geliştiriciler bu programla baslıklar ve filigranlar ekleyebilir, birden fazla PDF belgesini birlestirebilir, HTML belgelerinden metin ve resimleri cikartabilir ve bir çok diğer işlemleri yapabilir. IronPDF'in ayrintili dokümani ve kullanıcı dostu API'si sayesinde, geliştiriciler kolaylıkla yuksek kaliteli PDF belgeleri otomatik olarak oluşturabilirler. IronPDF, belgeleri daha iyi işleme ve bazi ulasilmaz kullanıcı deneyimlerini sunmak icin gereken tüm özellikler ve islevleri saglayarak faturalar, raporlar ve dokümantasyonun oluşturulmasi dahil olmak üzere çeşitli baglamlarda yer alir.

NestJS Node.js (Geliştiriciler Icin Nasıl Calisir): Sekil 3 - IronPDF

IronPDF'nin Özellikleri

  • HTML'yi PDF'ye Dönüştürme: Bu, JavaScript ve CSS dahil olmak üzere her tur HTML metniyle uyumlu, kolay ve hizli bir işlemdir.
  • PDF dosyasini birlestirme: Dökuman yonetimi gorevlerini basit hale getirmek icin birden fazla PDF belgesini tek bir PDF dosyasi haline getirin.
  • Metin ve Resim Cikartimi: PDF dosyalarindan metin ve resimleri cikartarak, bunlar ile daha fazla veri işleme veya analiz yapabilirsiniz.
  • Filigran Ekleme: Marka veya guvenlik amaclari icin PDF sayfalarina metin veya resim filigranlar ekleyebilirsiniz.
  • Baslik ve Altbilgi Ekle: PDF belgelerinin baslik ve altbilgilerine kisilestirilmis bir mesaj veya sayfa numaralari ekleyebilirsiniz.

IronPDF yükleyin

IronPDF işlevselliğini etkinleştirmek için gerekli Node.js paketlerini kurmak için npm paket yöneticisini kullanın.

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

NestJS ve IronPDF Node.js Entegrasyonu

IronPDF Node.js paketini yuklemek, PDF üretimini yonetmek icin bir hizmet oluşturmak ve PDF üretimi icin son noktalar oluşturmak icin bir kontrolcu oluşturmak, IronPDF'yi bir NestJS uygulamasıyla entegre etmenin gereken adımlarıdır.

Bir PDF Hizmeti Oluşturun

PDF'lerin oluşturulmasını yönetmek için yeni bir hizmet oluşturun. Bu hizmet, IronPDF'yi kullanarak HTML bilgilerini PDF'lere dönüştürecektir.

nest generate service pdf
nest generate service pdf
SHELL

Oluşturulan pdf.service.ts dosyasında PDF oluşturma mantığını uygulayın.

// src/pdf/pdf.service.ts
import { Injectable } from '@nestjs/common';
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;
config.setConfig({ licenseKey: '' });

@Injectable()
export class PdfService {
  async generatePdf(htmlContent: string): Promise<Buffer> {
    const pdf = await document.fromHtml(htmlContent);
    const pdfBuffer = await pdf.saveAsBuffer();
    return pdfBuffer;
  }
}

Bir PDF Kontrolcusu Oluşturun

PDF oluşturma icin bir son nokta sunmak icin bir kontrolcu oluşturun.

nest generate controller pdf
nest generate controller pdf
SHELL

HTML girişi alıp PDF çıktısı veren bir uç nokta oluşturun ve bunu sonuçlanan pdf.controller.ts dosyasında yapın.

// src/pdf/pdf.controller.ts
import { Controller, Post, Body, Res } from '@nestjs/common';
import { PdfService } from './pdf.service';
import { Response } from 'express';

@Controller('pdf')
export class PdfController {
  constructor(private readonly pdfService: PdfService) {}

  @Post('generate')
  async generatePdf(@Body('html') htmlContent: string, @Res() res: Response) {
    const pdfBuffer = await this.pdfService.generatePdf(htmlContent);
    res.set({
      'Content-Type': 'application/pdf',
      'Content-Disposition': 'attachment; filename=generated.pdf',
      'Content-Length': pdfBuffer.length,
    });
    res.end(pdfBuffer);
  }
}

IronPDF, HTML içeriğini bir PDF arabelleğine dönüştürmek için kullanılır ve ardından PdfService kullanılarak geri döndürülür. PdfService, HTML'i PDF olarak önderirlemek için IronPDF kullanır. Bu entegrasyon, NestJS kontrolcusu araciligiyla kolayca yonetilir. Bir sonraki adım, istemciden HTML içeriğini almak için bir POST uç noktası /generate tanımlamaktır. IronPDF kutuphanesini kullanarak, saglanan HTML verilerini API icinde bir PDF'ye dönüştüruyoruz.

Daha net olmak gerekirse, pdf.saveAsBuffer() kullanarak PDF dosyasının bir ikili arabelleğini oluşturuyor ve IronPdf.fromHtml(htmlContent) kullanarak HTML içeriğinden bir PDF nesnesi oluşturuyoruz. Bunu takiben, bu arabellek uygun MIME türüyle (application/pdf) istemciye geri döndürülür. Sunucu, PDF oluşturma işlemi sirasinda karsilasilan sorunlari kaydederek port 3000 üzerinden dinler. Yanitta, hata durumunda istemciye 500 durum kodu verilir. Bu ayarlama, web uygulamasi icin faturalar, raporlar veya diğer belgeler oluştururken faydalidir, cunku HTML iceriginden dinamik PDF'ler oluşturulmasina izin verir.

NestJS Node.js (Geliştiriciler Icin Nasıl Calisir): Sekil 4 - PDF Ciktisi

Sonuç

IronPDF'nin ileri düzey PDF oluşturma yeteneklerini NestJS'in güvenilir ve modüler tasarımıyla birleştirmek, dinamik PDF yaratımı için etkili bir çözüm sunar. Geliştiriciler, yukarıda belirtilen prosedürleri takip ederek HTML metinlerinden PDF'ler oluşturabilen etkili ve ölçeklenebilir bir sunucu tarafı uygulama oluşturarak raporlar, faturalar ve dokümantasyon üretme gibi çeşitli iş hedeflerini ele alabilir.

IronPDF'nin özellikleri, NestJS'in modülerliği, dekoratörleri ve bağımlılık enjeksiyonu ile güçlendirilir, bu da yönetimi ve test edilmesi kolay bir kod tabanı oluşturur. IronPDF, PDF üretiminin karmaşıklıklarını ele alırken, geliştiriciler iş mantığına odaklanabilir ve bu kombinasyon sayesinde kolayca karmaşık uygulamalar oluşturabilir.

IronPDF ve Iron Software ürünlerini kurumsal uygulama geliştirme yığınıza entegre ederek, müşteriler ve son kullanıcılar için özellik açısından zengin, premium yazılım çözümleri sağlayabiliriz. Ayrıca, projeler, backend sistemler ve süreç optimizasyonu bu sağlam temelle daha basit olacaktır. IronSoftware ve IronPDF, her biri $799'de başlar. Bu teknolojilerin geniş kapsamlı dokümantasyonu, aktif çevrimiçi geliştirici topluluğu ve düzenli güncellemeleri, onları modern yazılım geliştirme projeleri için mükemmel bir seçenek yapar.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimleri lisans derecesine sahiptir ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışmaktadır. Küçük yaşlardan itibaren kodlamaya ilgi duyan Darrius, bilişimi hem gizemli hem de erişilebilir buldu ve onu yaratıcılık ve problem çö...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara