Ubuntu 16.04 LTS Üzerinde Express.js Kullanarak Node.js RESTful APIsi Oluşturma

Bu eğitimde, Ubuntu 16.04 LTS'de NGINX ile ters proxy uygularken Node.js ve Express kullanarak HTTP isteklerini sunacak eksiksiz bir RESTful API'nin nasıl kurulacağını öğreneceksiniz. Postacı adlı bir uygulama kullanacağızAPI'mızı test etmek ve tamamen işlevsel olduğundan ve düzgün çalıştığından emin olmak için çok iyi bilinen bir API geliştirme aracı. Node.js, Chrome'un V8 motorunu temel alan hızlı, platformlar arası bir JavaScript çerçevesidir. Hem masaüstü hem de sunucu uygulamalarında kullanılır ve tek iş parçacıklı olay döngü işlemleriyle ünlüdür. Node.js için oluşturulan web uygulama çerçevemiz Express.js ile paketlenmiş RESTful API'mızın arka ucu olarak Node.js'yi kullanacağız. Express.js ücretsiz ve açık bir yazılım olarak piyasaya sürüldü. Express, sunucu tarafındadır, JavaScript ile yazılmıştır ve API'leri oluşturmak için tasarlanmıştır, bu da onu projemiz için mükemmel kılar. Öte yandan Postman, API geliştirme düşünülerek çok güçlü bir HTTP istemcisidir. API geliştirme için isteyebileceğiniz tüm araçları içerir.

Postacı Kurulumu

İlk olarak, Postman'ın web sitesine gitmek ve ana bilgisayarınız için Postman'ı indirip yüklemek istiyorsunuz (Sunucunuz değil). Tüm kurulum talimatları web sitelerinde olacaktır.

Node.js Yükleniyor

Başlamak için önce Node.js'yi yüklememiz gerekecek, böylece API'mızı geliştirmeye başlayalım. Resmi web sitesinden Node.js dosyasını indirip kuracağız.

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

Ayrıca, modülleri derlemede yardımcı olacak gerekli oluşturma araçlarını da almak isteyeceksiniz.

sudo apt-get install build-essential

Bu eğitim için, Node.js'nin 8.9.3 sürümü olan LTS sürümünü kullanacağız.

Node.js projemizi başlatma

Bir uygulama içerecek yeni bir Node.js projesi başlatmamız gerekecek. Bunu yapmak için yeni bir dizin oluşturun.

 mkdir expressapi 

Yeni dizine geçin. İçeri girdikten sonra npm init, gerekli tüm istemleri çalıştırın ve tamamlayın. Uygulamanızın "giriş noktası" nı not edin: bu dosyayı daha sonra oluşturacaksınız. İşiniz bittiğinde, package.jsongeçerli dizininizde bir dosya göreceksiniz . Projemizin bir açıklaması olarak işlev görür ve çalışması için gereken tüm bağımlılıkları listeler.

Express.js kurulumu

Şimdi Express.js ve bağımlılıklarını yapılandıracağız.

npm install express

Kurulum işlemi başlayacaktır. Her şeyin indirilmesinin tamamlanması birkaç dakika sürecektir.

Ana dosyamız başlatılıyor

Ardından, API'mız için ana başlangıç ​​dosyamızı oluşturacağız. Burada, package.jsondosyada gördüğünüz "giriş noktası" nı kullanacaksınız . Bu öğretici adına, varsayılan adlandırma şemasını kullanacağım index.js.

touch index.js

Ardından, nano metin düzenleyicisinde açın.

nano index.js

Ana dosyamızda, önce tüm ana paketlerimizi aramak ve rotalarımızı kaydetmek istiyoruz.

var express = require('express');        
var app = express();                 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;  
const router = express.Router();
router.get('/', function(req, res) {
    res.json({ message: 'API is Online!' });   
});

app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);

Temel olarak burada yaptığımız şey, uygulamamızı başlatmak ve API'mız için temel bir yönlendirici kurmaktır. Uygulamamızın bağlantı noktasını ayarladığımızı unutmayın 8080. RESTful API'mızı yapılandırdığımızda bu numaraya ihtiyacımız olacak. Şimdi devam edip API'mızı test etmeye hazırız.

API'mızı Postacı ile test etme

Proje dizininde aşağıdakileri çalıştırın.

node <filename>.js

Bu, <filename>dosyada belirttiğiniz başlangıç ​​dosyasının bulunduğu API'yı başlatır package.json. Ardından, PC / Mac'inizde Postacı'yı açın ve Newsağ üst köşedeki " " düğmesini, ardından " Request" düğmesini tıklayın . Oradayken GETyanında " " yazan bir çubuk görmelisiniz . Buraya istek URL’nizi gireceğiz. İstek URL'si bölümüne aşağıdakileri girin ve " Send" düğmesini tıklayın .

`http://your-server-ip:3000/api` 

" 'API is online'" Göreceksiniz .

API yolları

Rotaları ele almak için Express yönlendiricisini kullanacağız. Bir yönlendiricinin ne olduğunu bilmiyorsanız, esasen uygulama uç noktalarının istemci isteklerine nasıl yanıt verdiği budur. Örnek olarak oluşturacağımız rotalar şunlardır:

  • /api/numbers - 1-10 arasındaki tüm sayıları gösterir.

  • /api/letters - AZ'dan gelen tüm harfleri gösterir.

Şimdi ilk rota ara katman yazılımı yapımızı kuracağız.

router.use(function(req, res, next) {
   console.log('We've got something.');
   next() //calls next middleware in the application.
});

router.route('/numbers/:number').get((req, res) => {
     res.json({result: req.params.number + 1})
});

Bu örnekte, bir kullanıcının GET yöntemini kullanarak kelime biçimini sağlayarak + 1 sayısının toplamını isteyebileceği bir durum oluşturduk. Bu router.route()işlevi, sonuç olarak hangi numarayı geri göndermek istediğimizi göstermek için kullanırız. Parametreler :önlerinde " " ile adlandırılır . Bu parametrelere aracılığıyla erişiyoruz req.params.

İşte harflerle bir örnek.

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

Yukarıdaki ile aynı yöntemi kullanıyoruz, ancak mektubu büyük harfle geri gönderiyoruz.

NGINX'e Giriş

NGINX, web sunumu, ters proxy'ler, akış ve daha fazlası için kullanılan iyi bilinen açık kaynaklı bir yazılımdır. 80Node.js kök erişimi olmayan 1024'ten küçük bağlantı noktalarında bağlantıya izin vermediğinden, API'mızı tersine çevirmek için NGINX'i kullanacağız . Bu, alan adınızı sunucunuza bağlarken kullanışlı olabilir.

NGINX kurulumu

NGINX kurulumuna başlamak için terminalinizde aşağıdakileri çalıştırmanız ve kurulumun tamamlanmasını beklemeniz gerekir.

sudo apt-get install nginx

Daha sonra, NGINX'in uygulamamızı tersine çevirmek için kullanacağı site dosyamızı oluşturmak isteyeceğiz.

sudo nano /etc/nginx/sites-available-api.js

Dosyayı aşağıdakilerle doldurun, ardından kaydetmek için CTRL+ işaretini Okullanın.

server {
          listen 80;
          location / {
                proxy_set_header X-Real-IP 
                $remote_addr;
                proxy_set_header 
                X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header Host 
                $http_host;
                proxy_set_header 
                X-NginX-Proxy true; proxy_pass 
                http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade 
                $http_upgrade;
                proxy_set_header Connection 
                "upgrade";
                proxy_redirect off;
                proxy_set_header 
               X-Forwarded-Proto $scheme;
       }
}

Aynı bağlantı noktasını kullanarak uygulamamızı daha önce çalıştırdık, Nginx'e tüm istekleri bağlantı noktasındaki IP adresimizden bağlantı noktasında 80çalışan API'mıza yönlendirmesini söylüyoruz 8080.

Ardından, yeni oluşturulan dosyamızı sites-availableklasöre bağlayarak ters proxy'yi etkinleştirin :

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

Bu, NGINX'in API'mızı tersine çevirmesini sağlayacaktır.

İlk çalıştırma NGINX ile

NGINX yapılandırmamızı tamamladıktan sonra, NGINX'i başlatacağız, ardından API'mızı başlatacağız. İlk olarak, NGINX'i yeniden başlatın.

sudo systemctl restart nginx

Ardından, API dizininize geri dönün ve başlatın.

node <filename>.js

Uygulama, bağlantı noktasında çalışır 80. Her şeyin düzgün çalıştığından emin olmak için testi Postman ile yukarıdan yapmanız yeterlidir.

API'mızı çalışır durumda tutma

Bir üretim ortamında, arka planda sonsuza kadar çalışmaya devam etmelerini sağlamak için Düğüm uygulamalarınız için bir süreç yöneticiniz olduğundan emin olmak istersiniz. Bu derste, Node.js uygulamaları için minimum duruş süresiyle sonsuza dek hayatta kalmasını sağlayacak bir süreç yöneticisi olan PM2 (Process Manager 2) adlı bir süreç yöneticisi kullanacağız. PM2, durdurma, yeniden yükleme, duraklatma ve daha fazlası gibi birçok yararlı yönetim aracıyla birlikte gelir. PM2'yi yüklemek için aşağıdakileri yazın ve yüklenmesini bekleyin.

sudo npm install pm2 -g

Kurulduktan sonra, yapmanız gereken tek şey proje dizininde olduğunuzdan emin olmak, aşağıdakileri yazmak ve uygulama başlatılır.

pm2 start <filename>.js

PM2 ile uygulamamızı yönetme

Daha önce de belirtildiği gibi, PM2 uygulamanızı daha iyi yönetmek için kullanabileceğiniz bazı yararlı araçlara sahiptir.

  • pm2 stop- Adından da anlaşılacağı gibi, bu, o anda çalışan uygulamayı durdurmanıza ve işlemini sonlandırmanıza olanak tanır. Uygulamanız beklenmedik bir sonuç veriyorsa, durdurmanız kullanışlı olacaktır.

  • pm2 list- Liste işlevi, şu anda çalışan tüm uygulamaları PM2 aracılığıyla adlarıyla eşleştirmenizi sağlar. Uygulamanızın çalışma süresini hızlı bir şekilde kontrol etmeniz gerekiyorsa, bu aracı kullanmalısınız.

  • pm2 restart- Uygulamanız herhangi bir nedenle donarsa ve yeniden yüklemek isterseniz, pm2 yeniden başlatma bunu yapar. Başvuru sürecini öldürecek ve farklı bir süreç altında yeniden başlatacaktır.

  • pm2 monit- PM2'nin yerleşik monitör aracı, uygulamanızın CPU / RAM kullanımı gibi belirli ayrıntılarının bir grafiğini kullanıcı dostu ncurses tarzı bir grafikte görüntülemenizi sağlar. Bu, uygulamanızın yükünün görsel bir resmini istiyorsanız yararlıdır.

Son açıklamalar

Artık Node.js, Express kullanan ve NGINX ile ters proxy uygulayan RESTful API oluşturma görevimizi tamamladık. Bu eğitimde genişlemekten çekinmeyin. Yeni API'nızla kimlik doğrulama yöntemleri ekleme, veritabanı, daha iyi rota ve hata işleme ve çok daha fazlası gibi birçok harika şey yapabilirsiniz. IP adresinize önceden ayarlanmış bir "A" kaydına sahip bir alanınız varsa, alan adınızdan API’nıza erişebilirsiniz. Express.js hakkında daha fazla bilgi edinmek istiyorsanız, http://expressjs.com adresindeki web sitelerini ziyaret edin . NGINX ve ters proxy uygulaması hakkında daha fazla bilgi edinmek için http://nginx.com adresini ziyaret edin . PM2 hakkında daha fazla bilgi için http://pm2.keymetrics.io adresindeki sayfalarını ziyaret edin .



Leave a Comment

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Nintendo Switch Hakkında Son Derece Çılgın 6 Şey

Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.

Hala Teslim Edilmeyen Teknoloji Sözleri

Hala Teslim Edilmeyen Teknoloji Sözleri

Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Referans Mimarisi Katmanlarının İşlevleri

Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zeka Süreç Otomasyonunu Nasıl Bir Sonraki Seviyeye Taşıyabilir?

Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA: İnsan-AI Ayrımı İçin Ne Kadar Geçerli Bir Teknik Kalabilir?

CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Teknolojik Tekillik: İnsan Uygarlığının Uzak Bir Geleceği mi?

Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp ve Uzaktan Sağlık Hizmeti: Gelecek Burada

Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Hackerların Nasıl Para Kazandığını Hiç Merak Ettiniz mi?

Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

macOS Catalina 10.15.4 Ek Güncellemesi Çözmekten Daha Fazla Soruna Neden Oluyor

Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun