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

CentOS 7de Tavşan Kümesini Kümeleme

CentOS 7de Tavşan Kümesini Kümeleme

RabbitMQ, AMQP, STOMP ve diğer iletişim teknolojilerini destekleyen açık kaynaklı bir mesaj aracısıdır. Kurumsal uygulamalarda yaygın olarak kullanılan bir

Debianda NFS Paylaşımı Ayarla

Debianda NFS Paylaşımı Ayarla

NFS, bilgisayarların bilgisayar ağı üzerindeki dosyalara erişmesine izin veren ağ tabanlı bir dosya sistemidir. Bu kılavuz, klasörleri NF üzerinden nasıl açığa çıkarabileceğinizi açıklar

GitBucket Ubuntu 16.04 Kurulumu

GitBucket Ubuntu 16.04 Kurulumu

Bu kılavuz, Ubuntu 16.04 çalıştıran bir Vultr örneği için GitBucketin temel kurulumunu ve kurulumunu kapsar ve komutları şu şekilde yürüttüğünüzü varsayar:

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Bir Fedora 26 LAMP VPSye Directus 6.4 CMS Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Directus 6.4 CMS, geliştirici sağlayan güçlü ve esnek, ücretsiz ve açık kaynaklı Başsız İçerik Yönetim Sistemidir (CMS)

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Ubuntu 16.04 Üzerine Mattermost 5.2 Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Mattermost, Slack SAAS mesajlaşma servisine açık kaynaklı, kendi kendine barındırılan bir alternatiftir. Başka bir deyişle, Mattermost ile,

Linuxta TeamTalk Sunucusu Kurma

Linuxta TeamTalk Sunucusu Kurma

TeamTalk, kullanıcıların yüksek kaliteli sesli / görüntülü konuşmalara, metin sohbetine, dosya aktarımına ve ekranları paylaşmasına olanak tanıyan bir konferans sistemidir. Ben

Pagekit CMSyi CentOS 7ye Yükleme

Pagekit CMSyi CentOS 7ye Yükleme

Farklı Bir Sistem mi Kullanıyorsunuz? Pagekit PHP ile yazılmış açık kaynaklı bir CMSdir. Pagekit kaynak kodu GitHubda herkese açık olarak barındırılıyor. Bu kılavuz size

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Kök olmayan kullanıcılara giriş yapmak için SSH anahtarınızı kullanma

Vultr, yeni bir örnek oluşturduktan sonra SSH anahtarlarını önceden yüklemenizi sağlayan bir özellik sağlar. Bu, sunucu kök kullanıcısına erişmenizi sağlar, ancak

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Debian 9da Diaspora ile Sosyal Ağınızı Kurun

Farklı Bir Sistem mi Kullanıyorsunuz? Diaspora gizliliğe duyarlı, açık kaynaklı bir sosyal ağdır. Bu derste, bir Diaspora posının nasıl kurulacağını ve yapılandırılacağını öğreneceksiniz

Debian 9 Üzerinde Yakıt CMS Kurulumu

Debian 9 Üzerinde Yakıt CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Fuel CMS, CodeIgniter tabanlı bir içerik yönetim sistemidir. Kaynak kodu GitHubda barındırılmaktadır. Bu kılavuz size

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Arch Linux Üzerinde PostgreSQL 11.1 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların önüne # ve bir

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Ubuntu 16.10 Üzerinde Snipe-IT Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Snipe-IT, BT varlık yönetimi için ücretsiz ve açık kaynaklı bir web uygulamasıdır. Laravel 5.2 çerçevesi ve kullanımı üzerine yazılmıştır.

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

SSL / TLS ile vsFTPd Nasıl Güvenli Hale Getirilir

Çok Güvenli FTP arka plan programı, ya da sadece vsFTPd, özelleştirme yeteneği olan hafif bir yazılım parçasıdır. Bu derste bir müttefikimiz olacak

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Linuxta Ranger Terminal Dosya Yöneticisini Yükleme

Ranger, VI anahtar bağlamaları olan komut satırı tabanlı bir dosya yöneticisidir. Dizin hiyerarşisi manzaralı minimalist ve hoş bir curses arayüzü sağlar

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Ubuntu 18.04 LTS Kaynaktan Brotli Nasıl Yapılır

Farklı Bir Sistem mi Kullanıyorsunuz? Brotli, GZIPden daha iyi bir sıkıştırma oranına sahip yeni bir sıkıştırma yöntemidir. Kaynak kodu bu Githuda herkese açık olarak barındırılıyor

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

CentOS 7de Yalnızca SFTP Kullanıcı Hesaplarını Kurma

Belirli durumlarda, Sistem Yöneticisinin bir kullanıcı hesabı oluşturması ve yalnızca kendi dosyalarını sFTP yoluyla yönetmek için erişimini kısıtlaması gerekebilir, ancak b

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Ubuntu 16.04 LAMBA VPS Üzerine Omeka Classic 2.4 CMS Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? Omeka Classic 2.4 CMS, digita paylaşımı için ücretsiz ve açık kaynaklı bir dijital yayıncılık platformu ve İçerik Yönetim Sistemidir (CMS)

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Arch Linux Üzerinde Nginx 1.14 Kurulumu

Önkoşullar Güncel Arch Linux çalıştıran bir Vultr sunucusu (bu makaleye bakın.) Sudo erişimi. Kök olarak çalıştırılması gereken komutların başına # işareti gelir. th

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

Linuxta SSH ile Kök Girişini Devre Dışı Bırakma veya Kısıtlama

SSH üzerinden kök girişine izin vermek, teknoloji endüstrisinde genellikle zayıf bir güvenlik uygulaması olarak kabul edilir. Bunun yerine, hassas yönetim gerçekleştirebilirsiniz

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Ubuntu 16.04 Üzerine RabbitMQ Kurulumu

Farklı Bir Sistem mi Kullanıyorsunuz? RabbitMQ, Erlang programlama dilinde yazılmış, yaygın olarak kullanılan açık kaynaklı bir mesaj aracısıdır. Mesaj odaklı bir ara katman yazılımı olarak

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7de LibreNMS Kullanarak Cihazlarınızı İzleyin

CentOS 7 üzerinde LibreNMS kullanarak ağ cihazlarınızı etkili bir şekilde izleyin. Ağ izleme için gerekli adımları ve yapılandırmaları öğrenin.

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive Server Nasıl Kurulur?

Counter-Strike: Global Offensive sunucusu kurmak için gerekli adımlar. Gerekli araçlar ve yükleme süreci hakkında bilgi.

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

Ubuntu 16.04 LTS Üzerinde OpenNMS Kurulumu

OpenNMS, çok sayıda cihazı izlemek ve yönetmek için kullanılabilen bir açık kaynak ağ yönetim platformudur. Ubuntu 16.04 LTS üzerinde OpenNMS kurulumu için tüm adımları keşfedin.

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Ubuntu 16.04te LibreNMS Kullanarak Cihazlarınızı İzleyin

Farklı Bir Sistem mi Kullanıyorsunuz? LibreNMS tam özellikli bir açık kaynak ağ izleme sistemidir.

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?