Çerçeve Kullanmadan NodeJS API Nasıl Oluşturulur

Çerçeve Kullanmadan NodeJS API Nasıl Oluşturulur

Node.js, JavaScript kodunu bir tarayıcının dışında çalıştırmanıza izin veren, chrome'un v8 motoru üzerine kurulu açık kaynaklı bir JavaScript çalışma zamanıdır.





Olay modeli, ekosistemi ve hızı, Node.js'yi sunucu tarafı uygulamalar için en çok aranan ve kullanılan çalışma zamanlarından biri haline getirdi.





Çoğu Node.js API sunucusu, Express veya başka bir çerçeve kullanır. Ancak, sadece birkaç adımda çerçevesiz basit bir Node.js API'si de oluşturabilirsiniz.





GÜNÜN YAPILAN VİDEOSU

1. Adım: Geliştirme Ortamınızı Ayarlama

Bir proje dizini oluşturun ve CD çalıştırarak içine:

mkdir nodejs-api 
cd nodejs-api

Ardından, başlat npm projenizde çalıştırarak:



npm init -y 

Bu CRUD API'si, bir NoSQL veritabanı olan MongoDB'nin ve onun popüler ODM'si olan mongoose'un kullanımını içerecektir.

google play'den telefona müzik nasıl taşınır

Yüklemek için aşağıdaki komutu çalıştırın firavun faresi :





npm install mongoose 

Ardından, bir server.js projenizin kök dizininde dosya oluşturun ve bir sunucu oluşturmak için aşağıdaki kod bloğunu ekleyin:

const http = require("http"); 
const server = http.createServer((req, res) => {});

server.listen(3000, () => {
console.log(`Server is running`);
});

Bu kod bloğu, bir çekirdek Node.js modülü olan http modülünü içe aktarır. http modülü, Node.js'nin HTTP üzerinden veri aktarmasına izin verir. Bu modül, bir sunucu oluşturmak için gereken yöntemleri içerir.





Ardından, http modülünün sunucu oluştur bir sunucunun örneğini oluşturan ve döndüren yöntem. bu sunucu oluştur yöntem, parametre olarak bir istek ve yanıt nesnesi ile bir geri arama işlevi alır.

Ardından, kod çağırır dinlemek döndürülen sunucu örneğindeki yöntem. Bu, sunucunun verilen bağlantı noktasındaki trafiği dinlemeye başlamasını sağlar. bu dinlemek yöntem başarılı olduğunda bir geri aramayı (ikinci argüman) başlatır.

Son olarak, adlı iki dizin oluşturun rotalar ve modeller projenizin kök dizininde. bu rotalar klasörü API'niz için yönlendirme mantığını içerecektir. model veritabanı ile ilgili her şeyi içerecektir.

Adım 2: Uygulamanızı Bir Veritabanına Bağlama

İçinde server.js , içe aktarmak firavun faresi :

const mongoose = require("mongoose"); 

Ara bağlamak yöntem firavun faresi ve MongoDB URI'nizi argüman olarak iletin:

mongoose.connect("MongoDB_URI") 

3. Adım: Bir API Modeli Oluşturma

Basit bir blog uygulaması için bir CRUD API oluşturun. senin içinde modeller klasör, bir blogModel.js dosyasını açın ve dosyanıza aşağıdaki kodu ekleyin:

const mongoose = require("mongoose"); 
const blogSchema = mongoose.Schema({
title: {
type: String,
required: [true, "Blog must have a title"],
},
body: {
type: String,
required: [true, "Blog must have a body"],
},
});
module.exports = mongoose.model("Blog", blogSchema);

Yukarıdaki kod bloğu, iki özelliğe sahip bir firavun faresi modeli oluşturur ve bunları bir MongoDB veritabanına eşler.

Bu modeldeki her iki özellik de bir Sicim ile yaz gereklidir ayarlanır doğru . Bir istek gövdesi özelliklerden herhangi birini içermiyorsa, eşlik eden hata mesajları görüntülenecektir.

Son satır, bir firavun faresi modeli oluşturur ve dışa aktarır. model yöntem firavun faresi. Model adını iletin ( Blog ) ilk argüman ve bir şema olarak ( blogProgram ) ikinci argüman olarak.

Adım 4: Uygulamanızda Yönlendirmeyi Uygulama

yardımı olmadan Express gibi çerçeveler , API'nize yapılan her isteği işlemek için mantığı manuel olarak oluşturmanız gerekir.

İlk olarak, bir blogRoutes.js senin dosyanda rotalar klasörü, ardından blog modelini içe aktarın:

const Blog = require("../models/blogModel"); 

Ardından, bir eşzamansız oluşturun yönlendirici işlev, geçiş istek ve res parametre olarak ve işlevi dışa aktarın:

const router = async function (req, res) {}; 
module.exports = router;

Bu işlev, tüm yönlendirme mantığınızı içerecektir.

Ardından, yönlendirme mantığını rotaya göre uygulayacaksınız.

Rotaları ALIN

Aşağıdaki kod bloğunu dosyanıza ekleyin. yönlendirici uygulamak için işlev ALMAK yapılan istekler için rota işleyicisi /api/bloglar :

//  GET: /api/blogs 
if (req.url === "/api/blogs" && req.method === "GET") {
// get all blogs
const blogs = await Blog.find();

// set the status code and content-type
res.writeHead(200, { "Content-Type": "application/json" });

// send data
res.end(JSON.stringify(blogs));
}

Yukarıdaki kod bloğu şunları kontrol eder: url ve yöntem istek nesnesinin özellikleri. Daha sonra veri tabanından tüm blogları bulmak firavun faresi modelinde yöntem ( Blog ).

Daha sonra, yazmakKafa yöntem res , yanıt nesnesi. Bu yöntem, üç argüman verilen bir yanıt başlığı gönderir: bir durum kodu, isteğe bağlı bir durum mesajı ve başlıklar. bu 200 durum kodu başarılı bir yanıtı temsil eder ve bu API çağrısı için içerik türü uygulama/json .

iphone'daki emojiler ne anlama geliyor

Son olarak, sunucunun askıda kalmamasını sağlamak için isteği kapat son yöntem res . çağrı JSON.stringify dönüştürür bloglar bir JSON dizesine itiraz edin ve bunu son method onu yanıt gövdesi olarak döndürür.

Aşağıdaki kod bloğunu dosyanıza ekleyin. yönlendirici uygulamak için işlev ALMAK tek bir kaynak için rota işleyici:

// GET: /api/blogs/:id 
if (req.url.match(/\/api\/blogs\/([0-9]+)/) && req.method === "GET") {
try {
// extract id from url
const id = req.url.split("/")[3];

// get blog from DB
const blog = await Blog.findById(id);

if (blog) {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(blog));
} else {
throw new Error("Blog does not exist");
}
} catch (error) {
res.writeHead(404, { "Content-Type": "application/json" });
res.end(JSON.stringify({ message: error }));
}
}

Bu kod, kibrit url'nin biçimle eşleşip eşleşmediğini kontrol etmek için argüman olarak bir regex ifadesini alan yöntem: /api/bloglar/ .

Ardından, ayıklayın İD mülk url onu çağırarak dize bölmek yöntem. Bu yöntem argüman olarak bir kalıp alır ( / ), dizeyi desene göre böler ve bir dizi döndürür. Bu dizinin üçüncü öğesi, İD .

Son olarak, eşleşen belgeyi alın İD veritabanınızdan. Varsa, bir gönderin 200 cevap kodu , isteği kapatın ve alınan blogu gönderin. Mevcut değilse, bir hata atın ve onu catch bloğunda yanıt olarak gönderin.

en iyi d&d uygulamaları android

POST Rotası

uygulamak için aşağıdaki kod bloğunu yönlendirici işlevinize ekleyin. İLETİ rota işleyici:

// POST: /api/blogs/ 
if (req.url === "/api/blogs" && req.method === "POST") {
try {
let body = "";

// Listen for data event
req.on("data", (chunk) => {
body += chunk.toString();
});

// Listen for end event
req.on("end", async () => {
// Create Blog
let blog = new Blog(JSON.parse(body));

// Save to DB
await blog.save();
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(blog));
});
} catch (error) {
console.log(error);
}
}

İstek nesnesi şunları uygular: Node.js ReadableStream arayüz. Bu akış bir veri ve bir son istek gövdesinden verilere erişmenizi sağlayan olay.

Bu kod, data olayını dinler ve onu bir dizgeye dönüştürerek ve onu gövde değişken. İçinde son olay işleyicisi, bir Blog ayrıştırılmış gövde dizesiyle örnek. Ardından yeni blogu kaydeder, durum kodunu ve içerik başlığını gönderir ve isteği kapatır.

PUT Rotası

uygulamak için aşağıdaki kod bloğunu yönlendirici işlevinize ekleyin. KOY rota işleyici:

// PUT: /api/blogs/:id 
if (req.url.match(/\/api\/blogs\/([0-9]+)/) && req.method === "PUT") {
try {
// extract id from url
const id = req.url.split("/")[3];
let body = "";

req.on("data", (chunk) => {
body += chunk.toString();
});
req.on("end", async () => {
// Find and update document
let updatedBlog = await Blog.findByIdAndUpdate(id, JSON.parse(body), {
new: true,
});

res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(updatedBlog));
});
} catch (error) {
console.log(error);
}
}

PUT istek işleyicisi ile hemen hemen aynıdır. İLETİ istek işleyicisi, bunun dışında İD mülk url ilgili blogu güncellemek için.

Rotayı SİL

Uygulamanızı uygulamak için aşağıdaki kod bloğunu yönlendirici işlevinize ekleyin. SİLMEK rota işleyici:

// DELETE: /api/blogs/:id 
if (req.url.match(/\/api\/blogs\/([0-9]+)/) && req.method === "DELETE") {
try {
const id = req.url.split("/")[3];

// Delete blog from DB
await Blog.findByIdAndDelete(id);
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ message: "Blog deleted successfully" }));
} catch (error) {
res.writeHead(404, { "Content-Type": "application/json" });
res.end(JSON.stringify({ message: error }));
}
}

Bu kod bloğu, İD itibaren url , eşleşen belgeyi siler İD , durum kodunu ve başlıkları gönderir ve isteği kapatır.

Son olarak, içe aktar yönlendirici senin içinde server.js dosyalayın ve arayın yönlendirici fonksiyon, geçiş istek ve res argümanlar olarak:

const router = require("./routes/blogRoutes"); 

const server = http.createServer((req, res) => {
router(req, res);
});

Bu, sunucunuzun istekleri uygun şekilde engellemesini ve işlemesini sağlar.

Tamamlanan projeyi burada bulabilirsiniz GitHub deposu .

Node.js Çerçevesi Kullanma

Elle bir web API oluşturmak mümkün olsa da, bu zor bir iş olabilir. Çok sayıda uç vakayı ele aldığınızdan ve kodunuzun hatasız olduğundan emin olmanız gerekir.

Yıllar geçtikçe geliştiriciler, bunu çok daha kolay hale getirmek için ExpressJS, NestJS, Fastify vb. gibi çerçeveler oluşturdular.